uni-app h5+应用 去掉所有广告配置和应用标识符后上架测试时在iPad上发生崩溃
uni-app h5+应用 去掉所有广告配置和应用标识符后上架测试时在iPad上发生崩溃
示例代码:
获取当前用什么网络打开了哪个html
action: function() {
if (this.deviceId == null) {
return;
}
var types = {};
types[plus.networkinfo.CONNECTION_UNKNOW] = "OTHER";
types[plus.networkinfo.CONNECTION_NONE] = "OTHER";
types[plus.networkinfo.CONNECTION_ETHERNET] = "LINE";
types[plus.networkinfo.CONNECTION_WIFI] = "WIFI";
types[plus.networkinfo.CONNECTION_CELL2G] = "MOBILE2";
types[plus.networkinfo.CONNECTION_CELL3G] = "MOBILE3";
types[plus.networkinfo.CONNECTION_CELL4G] = "MOBILE4";
if (plus.networkinfo.CONNECTION_CELL5G) {
types[plus.networkinfo.CONNECTION_CELL5G] = "MOBILE5";
}
var action = {
deviceId: this.deviceId,
functional: document.title,
action: "open",
url: location.href,
networkType: types[plus.networkinfo.getCurrentType()]
};
console.log(action);
},
获取用的什么型号的手机
register: function(callback) {
var deviceInfo = {
"brand": plus.device.vendor,
"code": "string",
"dpi": 0,
"height": 0,
"model": plus.device.model,
"name": plus.device.vendor + plus.device.model,
"os": plus.os.name,
"osVersion": plus.os.version,
"language": plus.os.language,
"serialNo": "string",
"vendor": plus.device.vendor,
"width": 0
};
var _this = this;
plus.device.getInfo({
success: function(e) {
deviceInfo.serialNo = e.imei;
deviceInfo.code = e.uuid;
},
fail: function() { //授权失败时尝试调用其它API获取
deviceInfo.serialNo = plus.device.imei;
deviceInfo.code = plus.device.uuid;
},
complete: function(e) {
deviceInfo.dpi = parseInt((plus.screen.dpiX + plus.screen.dpiY) / 2);
deviceInfo.width = parseInt(plus.screen.resolutionWidth * plus.screen.scale);
deviceInfo.height = parseInt(plus.screen.resolutionHeight * plus.screen.scale);
console.log(deviceInfo);
}
});
},
操作步骤:
据苹果审核人员说 是打开就崩溃了,我现在真机没有办法测试
预期结果:
不崩溃
实际结果:
未知
bug描述:
使用h5+开发的非常简单的应用,纯纯的浏览本地的HTML,顶多就使用了设备id,uuid 序列号什么的。
Review device details:
- Device type: iPad
- OS version: iOS 15.1
- 提交应用商店后,评估说在iPad上面会崩溃,官方大大帮忙看看原因呢,另外,为了怕隐私相关的影响审核,相关的全部都没有勾选比如使用广告标识符,其他任何相关的都没有勾选,不知道跟这个有没有关系
- 评估提供的崩溃日志在附件
附件:
- attachment.crashlog-82B18154-CE29-47EF-88B9-6E5EE7F69D84_.txt
- attachment.crashlog-A204EC00-2A08-4AF9-81FE-46DBE67799B8_.txt
- attachment.crashlog-82B18154-CE29-47EF-88B9-6E5EE7F69D84_(1)_.txt
- attachment.crashlog-B4A80E28-15D3-4671-A310-6DC85E5316C0_.txt
- attachment.crashlog-B4A80E28-15D3-4671-A310-6DC85E5316C0_(1)_.txt
更多关于uni-app h5+应用 去掉所有广告配置和应用标识符后上架测试时在iPad上发生崩溃的实战教程也可以访问 https://www.itying.com/category-93-b0.html
制作自定义基座测试过吗?是否正常?
提交审核前使用 Testflight 测试是否正常?
更多关于uni-app h5+应用 去掉所有广告配置和应用标识符后上架测试时在iPad上发生崩溃的实战教程也可以访问 https://www.itying.com/category-93-b0.html
感谢您的帮助,但目前: 1、没有尝试过自定义基座,正准备尝试 2、在testflight里面下载应用时,提示无法安装app,所请求的app不存在或不可用
而且就用h5+ 创建的带mui的新项目,只在index.html增加hello world 使用ad hoc描述文件打包,安装在测试机器上打开还是闪退,同时我建立uni-app的示例程序,使用之前同上的描述文件与证书打包 是可以正常安装在测试设备上并且打开的,新建的空白uni-app也同样可行,h5+ 应该是真的有问题
回复 w***@qq.com: 提交打包的 appid 发我一下,我看看什么问题
回复 DCloud_iOS_XHY: appid:H5C833337 我已经用uni-app 重新包装了下 业务可以用了 只是 用uni-app包的时候底部的tab 有几率样式有问题
根据你提供的崩溃日志和代码分析,问题很可能出在设备信息获取的权限上。崩溃日志显示应用在启动时立即终止,主要原因是访问了受限制的设备标识符。
从代码看,你在 register 函数中使用了 plus.device.getInfo 来获取 imei 和 uuid,并且在失败回调中又尝试直接访问 plus.device.imei 和 plus.device.uuid。在 iOS 上,这些设备标识符的访问受到严格限制,特别是上架 App Store 的应用。
关键问题:
- iOS 隐私限制:从 iOS 10 开始,苹果禁止应用访问 UDID、IMEI 等持久性设备标识符。虽然
plus.device.uuid在 iOS 上返回的是 IDFV(供应商标识符),但你的代码中同时尝试获取imei,这在 iOS 上是无法获取的,可能导致权限问题。 - 审核被拒:即使你在提交时未勾选广告标识符选项,但代码中实际尝试获取了设备标识信息,这仍然可能触发苹果的隐私审核机制,导致应用被拒绝或运行时崩溃。
解决方案:
-
移除或替换设备标识获取代码:
- 删除
imei相关代码,因为 iOS 无法获取。 - 对于
uuid,确保你理解其返回的是 IDFV,且仅在必要情况下使用。考虑使用其他替代方案,如生成一个应用内唯一的匿名标识符。
- 删除
-
修改
register函数:register: function(callback) { var deviceInfo = { "brand": plus.device.vendor, "code": "string", "dpi": 0, "height": 0, "model": plus.device.model, "name": plus.device.vendor + plus.device.model, "os": plus.os.name, "osVersion": plus.os.version, "language": plus.os.language, "serialNo": "string", "vendor": plus.device.vendor, "width": 0 }; // 移除 plus.device.getInfo 调用,直接使用以下信息 deviceInfo.code = plus.device.uuid || "unknown"; // 注意:iOS 上返回的是 IDFV deviceInfo.serialNo = "unknown"; // iOS 无法获取 IMEI deviceInfo.dpi = parseInt((plus.screen.dpiX + plus.screen.dpiY) / 2); deviceInfo.width = parseInt(plus.screen.resolutionWidth * plus.screen.scale); deviceInfo.height = parseInt(plus.screen.resolutionHeight * plus.screen.scale); console.log(deviceInfo); }

