Necesito renderizar la página de manera diferente si es procesada por un iphone/ipod touch. Supongo que la información está en el objeto de solicitud, pero ¿cuál sería la sintaxis?¿Cómo puedo detectar si se accede a mi aplicación appengine con un iphone/ipod touch?
Respuesta
Esta es la sintaxis que estaba buscando, funciona con iPhone y iPod Touch:
uastring = self.request.headers.get('user_agent')
if "Mobile" in uastring and "Safari" in uastring:
# do iphone/ipod stuff
This article describe algunas formas de detectar un iPhone comprobando la variable del agente HTTP_USER_AGENT. Dependiendo de dónde quieras hacer el cheque en (nivel HTML, Javascript, CSS, etc.), estoy seguro de que puedes extrapolar esto a tu aplicación Python. Lo siento, no soy un tipo pitón. 8^D
Compruebe el agente de usuario. Será
Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A543a Safari/419.3
No estoy seguro de cómo hacer esto con appengine, pero el código PHP equivalente se puede encontrar aquí: http://www.mattcutts.com/blog/iphone-user-agent/
Bueno, que va a cambiar. Los bits clave que debe verificar una aplicación son 'iPhone' y 'AppleWebKit', usar esa cadena exacta te morderá la próxima vez que Safari obtenga un lanzamiento de punto. – ceejayoz
No, los bits clave son Mobile/(algo) y Safari/(algo). "iPhone" no estará allí en un iPod touch. –
¿Cómo aparece un android? Está basado en webkit, y no me sorprendería si pone Safari en su UA (Chrome hace esto, iirc). –
Aquí está cómo hacerlo implementarlo como middleware de Django, asumiendo que es lo que estás usando en appengine.
class DetectiPhone(object):
def process_request(self, request):
if 'HTTP_USER_AGENT' in request.META and request.META['HTTP_USER_AGENT'].find('(iPhone') >= 0:
request.META['iPhone'] = True
Básicamente busque 'iPhone' en HTTP_USER_AGENT. Tenga en cuenta que el iPod Touch tiene una firma ligeramente diferente a la del iPhone, de ahí la amplia búsqueda de 'iPhone' en lugar de una búsqueda más restrictiva.
si está utilizando el marco de trabajo estándar de webapp, el agente de usuario estará en la instancia de solicitud. Esto debe ser lo suficientemente bueno:
if "iPhone" in request.headers["User-Agent"]:
# do iPhone logic
Creo que su código debería decir self.request.headers ["User-Agent"] Esto funciona muy bien para mí. Gracias – mcotton
El artículo Using the Safari on iPhone User Agent String en el sitio web de Apple indican los diferentes agentes de usuario para el iPhone y el iPod touch.
Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A543 Safari/419.3
Mozilla/5.0 (iPod; U; CPU like Mac OS X; en) AppleWebKit/420.1 (KHTML, like Gecko) Version/3.0 Mobile/4A93 Safari/419.3
Mozilla/5.0 (iPhone; U; CPU iPhone OS 2_0 like Mac OS X; en-us) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/XXXXX Safari/525.20
import os
class MainPage(webapp.RequestHandler):
@login_required
def get(self):
userAgent = os.environ['HTTP_USER_AGENT']
if userAgent.find('iPhone') > 0:
self.response.out.write('iPhone support is coming soon...')
else:
self.response.out.write('Hey... you are not from iPhone...')
- 1. ¿Cómo detectar si IE accede a mi sitio como un sitio de confianza?
- 2. ¿Cómo puedo incrustar video en mi aplicación Sencha Touch?
- 3. ¿Cómo puedo reducir el tamaño de mi aplicación mono touch?
- 4. ¿Cómo puedo detectar cuando mi ventana se minimiza con wxPython?
- 5. ¿Cómo puedo detectar dinámicamente si mi aplicación es un sistema o es normal?
- 6. detectar CAShapeLayer touch
- 7. Detectar si se desinstaló una aplicación
- 8. ¿Cómo puedo detectar si mi navegador es Firefox?
- 9. ¿Cómo puedo detectar si mi aplicación está en modo de espacio aislado?
- 10. ¿Debo escribir mi aplicación con Sencha Touch o nativo?
- 11. ¿Cómo puedo detectar si mi programa se ejecuta en un entorno de Active Directory?
- 12. ¿Cómo puedo detectar si mi código se está ejecutando en la consola en Rails 3?
- 13. ¿Cómo puedo detectar si un navegador es compatible con MJPEG?
- 14. Cómo detectar si se toca la imagen
- 15. ¿Cómo puedo detectar si mi proceso se está ejecutando UAC elevado o no?
- 16. Cómo detectar si un elemento en mi ObservableCollection ha cambiado
- 17. ¿Cómo detectar si mi aplicación se está ejecutando en una máquina virtual?
- 18. ¿Puedo distribuir un JDK con mi aplicación?
- 19. ¿Cómo detectar el país y la ciudad de un usuario que accede a su sitio?
- 20. ¿Cómo puedo detectar cuándo se ha movido mi Vista?
- 21. ¿Cómo se accede a ARGV en Mathematica?
- 22. android: detectar si la aplicación se descargó del mercado
- 23. ¿Cómo puedo detectar si el usuario está "inactivo" con javascript?
- 24. ¿Cómo puedo saber si mi aplicación PHP usa demasiada memoria?
- 25. ¿Cómo puedo enviar un fax con mi aplicación Qt?
- 26. ¿Cómo puedo detectar si una aplicación de Android se está utilizando en Corea?
- 27. Detectar si mi aplicación se está ejecutando en el IDE "Delphi 2007 .Net"
- 28. ¿Cómo se accede a un atributo de modelo en jquery?
- 29. ¿Cómo puedo integrar mi aplicación con mi widget?
- 30. ¿Cómo puedo detectar si Dispatcher.DisableProcessing está activo?
Obtengo 'AttributeError: 'El objeto' WSGIRequest 'no tiene atributos' headers''. – noio