我需要呈現不同的頁面,如果它被iphone/iPod touch觸摸。我想信息在請求對象中,但是語法是什麼?如何檢測我的appengine應用程序是否正在通過iPhone/iPod touch進行訪問?
11
A
回答
8
這是我一直在尋找的語法,與iPhone和iPod touch的工作原理:
uastring = self.request.headers.get('user_agent')
if "Mobile" in uastring and "Safari" in uastring:
# do iphone/ipod stuff
3
This article概述了幾種通過檢查HTTP_USER_AGENT代理變量來檢測iPhone的方法。根據你想要在哪裏進行檢查(HTML級別,Javascript,CSS等),我相信你可以推斷這到你的Python應用程序。對不起,我不是一個蟒蛇人。 8^D
1
檢查用戶代理。這將是
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/
2
這裏是如何做到實現它在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'搜索不是更嚴格的搜索。
2
如果您使用標準webapp框架,用戶代理將位於請求實例中。這應該是足夠好:
if "iPhone" in request.headers["User-Agent"]:
# do iPhone logic
3
蘋果網站上的文章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
1
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. 檢測應用程序是否通過SSL訪問?
- 2. 如何檢測用戶是否正在訪問我已啓動的Outlook進程?
- 3. 如何檢測我的應用程序是否正在運行EarlGrey測試?
- 4. android如何檢測應用程序是否在過去運行
- 5. 如何檢查應用程序是否通過SBT運行?
- 6. 通過編程方式檢測應用程序是否正在被刪除ios
- 7. 如何檢測我的COM對象是否正在使用.NET應用程序?
- 8. 如何檢測用戶是否正在查看我的應用程序(Android)
- 9. 檢測我的應用程序是否在電話上運行
- 10. 檢測我的應用程序是否正在從用戶目錄執行
- 11. 從Silverlight OOB應用程序如何檢查進程是否正在運行
- 12. 如何檢測我的Android應用程序是否顯示?
- 13. 檢測訪問應用程序是否有錯誤
- 14. 如何檢測我的進程是否正在運行UAC提升?
- 15. 訪問的AppEngine應用程序ID
- 16. 如何檢測我的應用程序是否在Heroku上運行?
- 17. 如何通過我的ASP.NET MVC應用程序訪問NAS?
- 18. 如何通過我的j2me應用程序訪問Google文檔?
- 19. 如何檢測COM應用程序當前是否正在運行?
- 20. 如何檢查應用程序是否有權訪問目錄?
- 21. 如何檢測另一個應用程序啓動的進程是否正在執行?
- 22. 如何檢查某人是否正在運行我的程序?
- 23. 如何通過批處理腳本檢查進程是否正在運行
- 24. 是否有任何真正的應用程序在谷歌appengine上運行?
- 25. 檢查Windows應用程序是否正在運行(而不是進程)
- 26. 如何檢查用戶是否對我的應用程序進行了評分
- 27. 如何檢查應用程序是否正在運行,否則運行它?
- 28. 如何檢測是否正在訪問或請求文件?
- 29. 檢查進程是否正在運行
- 30. 如何檢測是否有人已從Facebook刪除應用程序,並重新訪問該應用程序?
那麼,它會改變。應用程序應檢查的關鍵字是'iPhone'和'AppleWebKit' - 使用該確切字符串會在下一次Safari獲得點數發佈時將您咬入屁股中。 – ceejayoz 2009-03-05 23:58:31
不,關鍵位是Mobile /(something)和Safari /(something)。 「iPhone」不會在iPod touch上。 – 2009-03-06 01:11:09
一個android顯示爲什麼?它基於webkit,如果它將Safari放入其UA中,我不會感到驚訝(Chrome會這樣做,iirc)。 – 2009-03-06 06:47:53