代码之家  ›  专栏  ›  技术社区  ›  Steph Thirion

如何检测我的appengine应用程序是否被iphone/ipodtouch访问?

  •  11
  • Steph Thirion  · 技术社区  · 17 年前

    如果页面被iphone/ipod触摸访问,我需要以不同的方式呈现页面。我想信息在请求对象中,但语法是什么?

    7 回复  |  直到 17 年前
        1
  •  7
  •   Steph Thirion    17 年前

    这是我一直在寻找的语法,适用于iphone和ipod touch:

    uastring = self.request.headers.get('user_agent')
    if "Mobile" in uastring and "Safari" in uastring:
      # do iphone / ipod stuff
    
        2
  •  2
  •   Dillie-O    17 年前

    This article 概述了通过检查HTTP_USER_AGENT代理变量来检测iPhone的几种方法。根据你想在哪里进行检查(HTML级别、Javascript、CSS等),我相信你可以将其推断到你的Python应用程序中。对不起,我不是蟒蛇。8^D

        3
  •  2
  •   Julien Roncaglia    17 年前

    Using the Safari on iPhone User Agent String 苹果网站上的文章指出了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
    
        4
  •  1
  •   Parand    17 年前

    以下是如何在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
    

    基本上在HTTP_USER_AGENT中查找“iPhone”。请注意,iPod Touch的签名与iPhone略有不同,因此可以进行广泛的“iPhone”搜索,而不是更严格的搜索。

        5
  •  1
  •   Patrick    17 年前

      if "iPhone" in request.headers["User-Agent"]:
        # do iPhone logic
    
        6
  •  0
  •   Keltex    17 年前

    Mozilla/5.0(iPhone;U;CPU类似于Mac OS X;en)AppleWebKit/420+(KHTML,类似于Gecko)版本/3.0移动版/1A543a Safari/419.3

    http://www.mattcutts.com/blog/iphone-user-agent/

        7
  •  0
  •   Alex Ho Alex Ho    17 年前
    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...')