簡體   English   中英

如何檢測我的 appengine 應用程序是否正在被 iphone/ipod touch 訪問?

[英]How do I detect if my appengine app is being accessed by an iphone/ipod touch?

如果通過 iphone/ipod touch 訪問頁面,我需要以不同的方式呈現頁面。 我想信息在請求 object 中,但語法是什么?

這是我一直在尋找的語法,適用於 iphone 和 ipod touch:

uastring = self.request.headers.get('user_agent')
if "Mobile" in uastring and "Safari" in uastring:
  # do iphone / ipod stuff

本文概述了通過檢查 HTTP_USER_AGENT 代理變量來檢測 iPhone 的幾種方法。 根據您要在哪里進行檢查(HTML 級別、Javascript、CSS 等),我相信您可以將其推斷為您的 ZA7F5F35426B927411FC9231B56382173 抱歉,我不是 python 人。 8^D

蘋果網站上的在 iPhone 用戶代理字符串上使用 Safari文章指出了 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

以下是如何在 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”搜索,而不是更嚴格的搜索。

如果您使用的是標准 webapp 框架,則用戶代理將位於請求實例中。 這應該足夠好:

  if "iPhone" in request.headers["User-Agent"]:
    # do iPhone logic

檢查用戶代理。 這將是

Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A543a Safari/419.3

我不確定如何使用 appengine 執行此操作,但可以在此處找到等效的 PHP 代碼: http://www.mattcutts.com/blog/iphone-user-agent/

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...')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM