跨平台应用开发进阶(十一) :uni-app 实现IOS原生APP-云打包集成极光推送(JG-JPUSH)详细教程

一、前言

在前期完成 uni-app 实现 Android 原生APP-云打包集成极光推送(JG-JPUSH)操作后,接下来需要 uni-app 实现 IOS 原生APP-云打包集成极光推送(JG-JPUSH)。其操作步骤与Android端相差不多,实现细节略有不同。

二、资源

资源部分SDK依赖与Android相同。 需要额外新增的步骤是:生成IOS自定义基座需要IOS开发者证书,需要提前准备好。

三、集成

集成操作与Android相同,这里不再赘述。

四、遇到的问题及解决措施

4.1 IOS开发者证书无推送权限

在制作IOS自定义基座时,提示如下错误信息:

此错误的原因是在新版本XCode编译环境中会校验profile文件中是否配置使用Push功能。

如果应用中添加了"Push(消息推送) "模块(HBuildermanifest.json文件"模块权限"->"模块设置"中配置),profile文件中则必需配置添加"Push Notifications"能力。

针对以上问题,有以下两种解决方案:

  1. 删除Push功能,即在HBuilder的manifest.json文件"模块权限"->"模块设置"中配置删除"Push(消息推送)"模块;如果手动修改过manifest.json文件,请切换到源码视图,将permissions下的所有push节点数据都删除。

  2. 更新profile文件,操作方法如下:

  3. 确保使用的App IDs打开"Push Notifications"服务

  1. 登录苹果开发者网站,输入开发者账号、密码并登录;

  2. 左侧选择"Certificates, IDs & Profiles",打开iOS证书管理界面;

  3. 左侧"Identifiers"栏下选择"App IDs",打开应用ID管理界面;

  4. 在右侧ID管理列表中选择需要使用的应用标识;

  5. 点击"Edit"按钮,在打开的服务列表中选中"Push Notifications"服务,点击"Done"保存;

  1. 重新生成profile文件
  1. 左侧"Provisioning Profiles"栏下选择"Distribution",打开发布profile管理界面;

  2. 在右侧profile管理表中选择需要更新的profile项;

  3. 点击"Edit"按钮,打开profile编辑页面;

  4. 确认配置项正确,点击"Generate"按钮重新生成profile文件;

3. 验证方法 简单验证profile文件是否配置Push功能的方法是使用记事本打开profile文件,搜索是否存在"aps-environment"。

如果存在则表明配置Push功能正确,重新提交云端打包即可。

提示⚠️:对于付费打包的用户,若第一次已经提示开发者证书无推送权限时,在未增加推送权限前就不要重复组自定义基座了,否则会重复扣费!

4.2 manifest中并没有配置push模块。但云端打包ios就是一直报Code Signing Error: Provisioning profile "***" doesn't support the Push Notifications capability.

Dcloud问题库也搜到了以上问题,但是并没有给出合理的解决方案。

4.3 App云端打包时,ios报profile文件与私钥证书文件不匹配

解决方案:尝试重新生成。

4.4 证书不受信任

集成推送服务后,提示证书不受信任:

经查阅资料,发现生成的SSL证书是2022年1月27日之后更新的,之前安装的Worldwide Developer Relations G3过期了,故需要安装G4证书。

下载地址:点击下载

下载Worldwide Developer Relations - G4 (Expiring 12/10/2030 00:00:00 UTC)

然后,双击添加到"钥匙串访问",证书就正常了。

4.5 极光控制台推送信息失败

极光控制台在推送时,显示推送失败,失败原因为:token获取失败。

解决措施:需要在manifest.json配置文件-APP模块配置处,勾选Push(消息推送)配置,但是切记不勾选下方的任一二级菜单!

注意⚠️:此处使用的HBuilder版本为3.6.4.20220922,使用其他版本可能会导致配置后依然无法获取到推送信息(可能是HBuilder版本问题,目前官方未给出回复)。

五、iOS证书的类型和作用

5.1 iOS证书的类型和作用

iOS证书主要分为四类:

  • iOS开发证书
  • iOS发布证书
  • iOS推送证书
  • iOS企业证书

1、iOS开发证书 iOS开发证书是用于测试APP,在开发过程中安装到苹果手机真机测试APP的运行情况。

2、iOS发布证书 当APP开发测试好后上线就需要用到iOS发布证书,用iOS发布证书打包的ipa才能上传到App Store审核。

3、iOS推送证书 iOS推送证书是用于推送通知的,平时我们在手机的系统栏下拉看到的那些消息就是推送通知,如果要做这个功能就需要配置推送证书。

4、iOS企业证书 iOS企业证书需要企业开发者账号才能申请,用于无法上架App Store的苹果APP打包签名使用。

常用的就是以上这4种iOS证书,当你需要什么功能的时候就知道用哪个类型的iOS证书。

5.2 iOS证书的构成和有效性

iOS证书由两个文件构成。.p12文件和.mobileprovision文件

.p12文件相当于公钥,.mobileprovision文件相当于私钥。

开发证书.p12文件苹果规定只能申请2个,发布证书.p12文件只能申请3个!iOS证书配置.mobileprovision文件是没有任何数量限制的!

.p12可以共用,一个p12可以对应无数个.mobileprovision文件!所以就算.p12申请一个也够用了,可以对应创建无数套iOS证书!

所以对于证书数量的担忧是没有意义的!不会限制你上架多少个APP!

ios证书的有效期是一年,在我们软件的和开发者后台都能看到到期时间。

5.3 iOS证书可以删除吗,到期怎么更新

iOS证书是可以随意删除的(不管有没有到期),不会影响已经上架的APP。

如果你还在测试APP。删除了测试用的开发证书,APP将打不开,当然这个也没什么关系,测试APP是要不停打包的,重新申请证书打包重新安装就可以了。

iOS证书到期了需不需要重新申请呢,具体看需要,如果你要更新已经上架的APP,更新版本,删除到期的证书重新申请打包上传更新。

如果不更新APP,到期了不管他也没什么关系,不会影响上架了的APP。

六、思路拓展

以上只是实现了极光控制台手动推送,当用户任务某一节点完成时,需要做到主动推送消息,就涉及到主动调用推送API,API应用可参考API说明

七、拓展阅读

相关推荐
也无晴也无风雨29 分钟前
深入剖析输入URL按下回车,浏览器做了什么
前端·后端·计算机网络
Martin -Tang1 小时前
Vue 3 中,ref 和 reactive的区别
前端·javascript·vue.js
FakeOccupational3 小时前
nodejs 020: React语法规则 props和state
前端·javascript·react.js
放逐者-保持本心,方可放逐3 小时前
react 组件应用
开发语言·前端·javascript·react.js·前端框架
曹天骄4 小时前
next中服务端组件共享接口数据
前端·javascript·react.js
阮少年、4 小时前
java后台生成模拟聊天截图并返回给前端
java·开发语言·前端
郝晨妤5 小时前
鸿蒙ArkTS和TS有什么区别?
前端·javascript·typescript·鸿蒙
AvatarGiser6 小时前
《ElementPlus 与 ElementUI 差异集合》Icon 图标 More 差异说明
前端·vue.js·elementui
喝旺仔la6 小时前
vue的样式知识点
前端·javascript·vue.js
别忘了微笑_cuicui6 小时前
elementUI中2个日期组件实现开始时间、结束时间(禁用日期面板、控制开始时间不能超过结束时间的时分秒)实现方案
前端·javascript·elementui