公司项目用ionic3构建, 用了极光推送插件(cordova-plugin-jpush). 开发时一切将各种Bundle Id, 推送证书等都绑定完测试一切正常. 可是要给测试人员打Ad-Hoc包时发现个问题, 居然获取不到apple 推送服务器的devicetoken. 之后重新检查了apple开发者中心的证书,appid,描述文件; 检查了工程里Capabilities是否选择推送功能 等, 都没有错误.最后发现原来是ionic生成的entitlements文件没有注入aps字段,修改后就好使了, 下面把一些细节做图文说明, 也是对自己一天调查的记录.
1.一般来说 开发环境好使, 说明代码基本没问题了. 我这边报错是获取不到divecetoken.所以一开始怀疑证书权限配置有问题. 可看了之后并无问题 push notification 都是enabled绿灯. 描述文件也是一致的
![开发者中心appid配置推送](https://i-blog.csdnimg.cn/blog_migrate/f6aee414e6eded00a2bbb9936dc11d0b.png)
2. 怀疑生产环境Capabilities没选择, 可是查看也是确认无误选择切显示正常的
![工程中Capabilities选择](https://i-blog.csdnimg.cn/blog_migrate/9cb59a96ae182b1f3b6994d17a39b091.png)
3.查看证书配置xcode中看General中release证书旁边的小问号(我是xcode9)
![](https://i-blog.csdnimg.cn/blog_migrate/28fed1cb1ab9eb3907bf7434cd0b391a.png)
发现和上面的开发证书不一样, 没有entitlements中的aps-environment等等,这项entitlements应该是capabilities选择成功后自动生成的.但这里没有我当时相当困惑.下图是正常的说明
![](https://i-blog.csdnimg.cn/blog_migrate/44fd8720c80ec531d10773cd41cf115e.png)
4.知道哪里有问题后, 直接去找.entitlements文件. 正常工程会直接添加到工程中. 我这个ionic构建的, 所以一开始找半没找到. 后来在build setting中code signing Entitlements里找到路径
![](https://i-blog.csdnimg.cn/blog_migrate/a5e0051317a925f64d0f28c9536c3228.png)
果然release文件居然是空的...然后自己在root下创建个aps-environment键, 生产环境值为production. 如下图
![](https://i-blog.csdnimg.cn/blog_migrate/2e15ac971ededb10ecc8279bf15364b0.png)
5.这时再回到general中就是上面正常的样子了.
6.打包完成时, 如果有aps-environment就说明添加成功了, 装机测试终于好使了.
![](https://i-blog.csdnimg.cn/blog_migrate/07e457e81227a996cbd345173899b242.png)
第一次发帖, 不足之处请海涵, 多多指教.
转载于:https://www.cnblogs.com/Lesliebby/p/9386466.html