我需要呈现不同的页面,如果它被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