我需要呈現不同的頁面,如果它被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. 檢測Windows進程和應用程序是否正在運行
- 3. 如何檢測用戶是否正在訪問我已啓動的Outlook進程?
- 4. 如何檢測我的應用程序是否正在運行EarlGrey測試?
- 5. 如何檢測應用程序是否正在運行Cloud9?
- 6. android如何檢測應用程序是否在過去運行
- 7. 我的程序如何檢測,是否通過mpirun啓動
- 8. 如何檢測進程或應用程序是否正在運行並終止程序如果它不是
- 9. 如何檢查應用程序是否通過SBT運行?
- 10. 通過使用PID檢查進程是否正在運行
- 11. 如何檢測我的COM對象是否正在使用.NET應用程序?
- 12. 通過編程方式檢測應用程序是否正在被刪除ios
- 13. 如何檢測我的應用程序是否是沙盒?
- 14. 我可以檢測我的Windows 8應用程序是否正在運行?
- 15. 如何檢測用戶是否正在查看我的應用程序(Android)
- 16. 如何檢測是否在Windows Metro應用程序進程中運行?
- 17. 檢測我的應用程序是否在電話上運行
- 18. 檢測我的應用程序是否正在從用戶目錄執行
- 19. 如何檢測我的Android應用程序是否顯示?
- 20. 從Silverlight OOB應用程序如何檢查進程是否正在運行
- 21. 如何通過雙擊文件來檢測應用程序是否已啓動?
- 22. 我如何檢查我的應用程序是否正在運行
- 23. 檢測訪問應用程序是否有錯誤
- 24. 通過鼠標點擊檢測應用程序是否啓動?
- 25. 檢測我的Web應用程序是否正在iPad設備上運行
- 26. 如何檢測我的進程是否正在運行UAC提升?
- 27. 訪問的AppEngine應用程序ID
- 28. 檢測應用程序正在訪問的網址從
- 29. 如何檢測我的應用程序是否在Heroku上運行?
- 30. 如何檢測我的應用程序是否在兼容模式下運行?
那麼,它會改變。應用程序應檢查的關鍵字是'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