我是靠谱客的博主 重要冬日,最近开发中收集的这篇文章主要介绍用xcode11打包app H5判断ipadpro机型 navigator.userAgent,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

需求想要的效果是 web/wap自动跳转,ipad归于wap跳转H5页面

新版app升级Xcode11来打新包出现ipadPro 不识别是ipad机型

首先ipadPro本来就是一个特殊机型!!(神坑)
用navigator.userAgent方法打印下面一堆

下图是iphone7p真机浏览器弹框

在这里插入图片描述

下图是ipadPro 在浏览器上弹出

在这里插入图片描述

下图是谷歌浏览器

分别是浏览器模拟iphone6/7,ipad ,ipadPro 打印出结果
在这里插入图片描述

  1. iphone都还正常,会返回机型iphone也会有系统mac os,也会显示mobile
  2. ipad出来的虽然有系统mac os 但是还有机型iPad
  3. 再看ipadPro真机弹框 根本就没返回机型iPad!!!所以ipadPro不属于ipad了吗?
  4. 也不能用系统mac os来判断,那样所以苹果电脑就不能排除了
  5. 在电脑上模拟ipadPro压根是测不出来问题,在真机上就会出bug,所以还是要真机测试一下

其次还有一个问题

就是xcode11打包,app升级xcode10->xcode11,所以打包出来总是新包出现问题,我还是alert出问题所在,看下图是xcode11打包之后在app上用navigator.userAgent方法弹出
在这里插入图片描述
弹出来的东西跟少了,像version/safari都没有了,但是至于什么原理还得要研究一下xcode了

重点来了----解决办法

其实后来我发现手机只要判断 ‘ontouchend’ in document 就可以了,因为大多手机肯定是需要touch事件,但是如果真要是电脑也支持touch事件也还是要做兼容了,但目前os的电脑肯定没有touch事件

所以根据之前的方法整理了如下代码,如果实践中还有兼容问题,可留言

isWap: function() {
	var ua = navigator.userAgent;
	var isMidp = ua.match(/midp/i) == "midp";
	var isUc7 = ua.match(/rv:1.2.3.4/i) == "rv:1.2.3.4";
	var isUc = ua.match(/ucweb/i) == "ucweb";
	var isAndroid = ua.match(/android/i) == "android";
	var isCE = ua.match(/windows ce/i) == "windows ce";
	var isWM = ua.match(/windows mobile/i) == "windows mobile";
	let isIphone = ua.indexOf("iPhone") != -1;
	let isIPad = !isIphone && 'ontouchend' in document;
	if (isIPad || isIphone || isMidp || isUc7 || isUc || isAndroid || isCE || isWM) {
	   return true;
	} else {
	   return false;
	}
}

2020.04.01 更新

还有一个解决方式

让ios的开发把机型配置修改一下成 ipad,这样虽然H5可以不用变动,但在app里的H5是管用,如果wap页面还是要像上面修改

感谢大家支持!

最后

以上就是重要冬日为你收集整理的用xcode11打包app H5判断ipadpro机型 navigator.userAgent的全部内容,希望文章能够帮你解决用xcode11打包app H5判断ipadpro机型 navigator.userAgent所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部