Как определить, что к моему приложению appengine обращаются через iphone / ipod touch? - PullRequest
11 голосов
/ 06 марта 2009

Мне нужно визуализировать страницу по-другому, если она доступна с помощью iphone / ipod touch. Я предполагаю, что информация находится в объекте запроса, но какой будет синтаксис?

Ответы [ 7 ]

8 голосов
/ 11 апреля 2009

Это синтаксис, который я искал, работает с iphone и ipod touch:

uastring = self.request.headers.get('user_agent')
if "Mobile" in uastring and "Safari" in uastring:
  # do iphone / ipod stuff
3 голосов
/ 06 марта 2009

В статье Использование Safari на iPhone User Agent Строка на веб-сайте Apple указывает различные агенты пользователя для iPhone и 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
3 голосов
/ 06 марта 2009

В этой статье описываются несколько способов обнаружения iPhone путем проверки переменной агента HTTP_USER_AGENT. В зависимости от того, где вы хотите выполнить проверку (уровень HTML, Javascript, CSS и т. Д.), Я уверен, что вы можете экстраполировать это в свое приложение Python. Извините, я не парень с питоном. 8 ^ D

2 голосов
/ 06 марта 2009

если вы используете стандартную среду webapp, пользовательский агент будет в экземпляре запроса. Это должно быть достаточно хорошо:

  if "iPhone" in request.headers["User-Agent"]:
    # do iPhone logic
2 голосов
/ 06 марта 2009

Вот как реализовать это в качестве промежуточного программного обеспечения в Django, предполагая, что это то, что вы используете в 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

В основном ищите «iPhone» в HTTP_USER_AGENT. Обратите внимание, что iPod Touch имеет немного другую подпись, чем iPhone, поэтому поиск по iPhone более широк, чем по более строгому.

1 голос
/ 06 апреля 2009
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 голос
/ 06 марта 2009

Проверьте пользовательский агент. Это будет

Mozilla / 5.0 (iPhone; U; процессор как Mac OS X; ru) AppleWebKit / 420 + (KHTML, как Gecko) Версия / 3.0 Mobile / 1A543a Safari / 419.3

Я не уверен, как это сделать с помощью appengine, но эквивалентный код PHP можно найти здесь: http://www.mattcutts.com/blog/iphone-user-agent/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...