最近在做一个即时通讯的项目,用的是融云的产品,在集成的过程当中,出现了通知收不到的问题。
具体来说下问题产生的原因,我们的主项目是一个Cordova项目,一些原生的东西我们会通过写插件,以及打静态包的方式添加到主项目当中,我在我的demo上是可以收到推送的,但是放到主项目上就不行了,以为是证书的原因折腾了好长时间,后来发现是主项目的entitlements文件没有导致的。
先来说下这个entitlements是干什么用的:Entitlements 为你的App授予特定的能力以及一些安全方面的权限 ,例如iCloud, push notifications, Apple Pay, and App Sandbox,我们这里只讨论他在远程推送中是起到什么作用的。(对其他方面有兴趣的同学可以参考下方的引用)
我们在初次创建一个工程文件时是没有这个文件的,当我们第一次在Targets->Capabilities中点开Push Notification,这个文件就会自动生成,我们来看一下他的结构
屏幕快照 2018-12-21 下午2.31.25.png
这是一个键值对的字典,key为APS Environment; value为development,这个value值是可以改的,不使用development这个值App也能收到通知(however, the provisioning portal assigns a value of development or production to the key, depending only on which activity you are creating the provisioning profile for),也就是说他会根据你的配置文件自动分配开发环境以及生产环境的值。
如果App不小心删掉了这个文件,怎么重新添加呢?commond + N ,选择plist文件,后缀填.entitlements,然后在Building Setting里面添加一下路径(不要出错哦)
网友评论