mPaaS-iOS小程序打不开问题的解决方案是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
在我们集成 mPaaS 插件并使用小程序的过程中,很多开发者遇到了打不开小程序的问题。今天就举例说明,开发者在完成基本接入后,尝试打开 H5 应用,但容器页面显示错误提示“设置标签”时,应该如何解决。
常见原因
mPaaS 框架在打开一个H5应用前,首先需要获知该应用离线包的基本信息。
因此客户端会主动通过RPC接口alipay.client.getUnionResource去拉取离线包信息。如果离线包信息获取失败,或没有命中要打开的目标应用,容器会提示错误 “系统繁忙,请稍后再试”。
针对这类问题,排查方向包括:检查 RPC 请求是否正常、检查环境和离线包发布是否匹配等。
问题排查步骤
(一)检查 RPC 请求是否正常
客户端需要主动拉取离线包信息,而拉取过程依赖 RPC 请求,如果RPC 链路存在问题,则无法正常获取离线包信息,导致加载失败。要确认 RPC 请求是否存在问题,需要在 Xcode 控制台中搜索 alipay.client.getUnionResource 观察 RPC 请求是否正常返回。如果存在错误,一般的错误代码包括 7XXX 或 3XXX 系列等,例如:
正常返回样例(result-status 为 1000):
Demo[83767:2555863] [mPaaSLog] APMobileNetwork alipay.client.getUnionResource resp:{ "content-encoding" = gzip; "Content-Type" = "text/plain;charset=UTF-8"; Date = "Tue, 11 Aug 2020 05:01:37 GMT"; vary = "Accept-Encoding"; "mgw-traceid" = 0a1cfd401597122097726853822435; "result-status" = 1000; "server-time" = 1597122097739; }
错误返回样例(result-status 不为 1000):
Demo[83383:2546279] [mPaaSLog] APMobileNetwork alipay.client.getUnionResource resp:{ "Content-Length" = 0; "Content-Type" = "text/plain;charset=UTF-8"; Date = "Tue, 11 Aug 2020 04:50:08 GMT"; memo = "%E9%AA%8C%E7%AD%BERPC%E6%8E%A5%E5%8F%A3%20%E5%8A%A0%E7%AD%BE%E6%95%B0%E6%8D%AE%E4%B8%BA%E7%A9%BA"; "mgw-traceid" = 0a1d7667159712140890222728553; "result-status" = 7014; "server-time" = 1597121408902; tips = "%E9%AA%8C%E7%AD%BERPC%E6%8E%A5%E5%8F%A3%20%E5%8A%A0%E7%AD%BE%E6%95%B0%E6%8D%AE%E4%B8%BA%E7%A9%BA"; }
7XXX 类错误均与 RPC 请求的签名验证过程有关,常见错误代码及原因如下:
错误码说明示例7000没有设置公钥移动 APP 中无线保镖中无 appId 对应的密钥或者网关无法获取 appId 对应的签名密钥。7001验签的参数不够网关服务端验证签名不通过。7002验签失败网关服务端验证签名不通过。7003验签-时效性失败API 请求入参 ts 时间戳超过系统设置的时间有效性。需要检查客户端时间是否为系统时间。7007验签-缺少 ts 参数API 请求缺少验签 ts 参数。7014验签-缺少 sign 参数API 请求缺少验签 sign 参数。一般情况下是客户端签名数据失败,导致缺失 sign 参数。请检查客户端无线保镖图片是否正确。
(二)基本排查动作
1. 检查 mPaaS 控制台设置的 Bundle ID 与 iOS 工程是否完全一致,包括:
mPaaS 控制台(控制台 > 代码配置 > iOS)上设置的 Bundle ID:
工程的 Bundle "Indentifier:
工程中 Info.plist 的 Bundle Indentifier:
2. 控制台下载的 .config 文件内容与项目中的 Meta.config 是否完全一致:
3. 客户端设备的时间是否为当前时间,时间误差必须小于 8 小时。
4. 如果上述检查存在信息不一致,则检查不通过,建议:
(三)检查 H5 App 信息和发布状态是否正确
客户端需要主动拉取离线包信息,在 RPC 请求正常返回的前提下,如果服务端没有返回目标离线包的信息,也会导致加载失败的错误,错误原因为离线包 AppNotExist 不存在。
基本检查动作:
1.根据检查RPC请求是否正常的说明,确认alipay.client.getUnionResource
RPC请求是否可以正常返回。
2.在 Xcode 控制台搜索错误关键字 AppNotExist,确认问题根因是否为找不到目标 H5 App,例如:
3.在 mPaaS 控制台和 iOS 工程中交叉确认如下信息,包括:
worksapceId、appId、mpaasapi 等元数据:控制台和 Meta.config 中的相关配置要完全一致,如果不一致,需要重新下载 .config 文件并导入。
目标离线包 ID:离线包管理页中的离线包 ID 要和工程代码中要打开的离线包 ID 一致;
查看离线包发布状态,确认离线包是否存在一个处于发布状态的版本:
查看离线包发布状态,确认离线包资源类型:必须为“普通资源包”;“全局资源包”不可直接打开;
查看离线包发布状态,确认该发布的离线包版本:必须 大于 客户端已安装的离线包版本;
查看离线包发布状态,确认该发布覆盖的客户端版本范围:必须覆盖测试 App 的当前版本号;注意:iOS 项目中,客户端版本号依赖info.plist 中的 Produc Version 字段,而不是 Xcode 项目 version,这里需要开发者手动同步。
工单协助
如果依然不能解决问题,请准备好相关问题的复现 Demo 工程,通过阿里云工单系统联系 mPaaS 售后技术支持。
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注编程之家行业资讯频道,感谢您对编程之家的支持。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。