融云环境与 provisioning profile 的关系。

融云的开发环境与生产环境和苹果的 provisioning profile 的关系。
发布时间: 2016-06-15 00:09

回答:

关于iOS推送设置可以参考http://www.rongcloud.cn/docs/ios_push.html

文档里面提到了环境和 provisioning profile 要匹配,在这里详细描述一下原因。

融云分为开发与生产环境。苹果的推送服务器也分开发环境与发布环境。这两套环境都是完全隔离的。其中融云的开发环境会连接苹果的开发环境;生产环境会连接苹果的发布环境。

当应用请求 deviceToken 时,就需要判断是要向苹果的那个服务器请求,这个依据就是 provisioning profile。当 App 是使用 Dev 的 provisioning profile 打包时,App就会向苹果的开发环境请求 deviceToken ;当是用 Distribution的provisioning profile 打包时,就会向苹果的发布环境请求 deviceToken。由于环境是隔离的,在一个环境上请求到的deviceToken是无法在另外一个环境上通过验证的。

当应用连接融云时,会根据 appkey 来判断时生产还是开发环境。如果是开发环境的 appkey 就会连到融云的开发环境;如果是生产环境的 appkey 就会连到融云的生产环境。

当应用成功连接到融云后,就会把获取到的 deviceToken 穿到融云服务器上。

当融云服务器需要推送时,就会拿到推送证书和 deviceToken 去对应的苹果服务器推送。也就是说如果应用使用的是开发环境 appkey,就会连到融云的开发服务器,开发服务器就会拿着开发推送证书和 deviceToken 去苹果的开发服务器推送,因此 provisoning profile 是 Dev 的才行( Dev 的 provisioning profile 才能从苹果的开发服务器获取到 devicetoken )。但如果这个 App 的 provisioning profile 是 Distribution 的,那么他的 deviceToken 是从苹果发布服务器获取的,使用这个 deviceToken 在苹果的开发服务器推送就无法通过验证了。反之亦然。

因此要想推送成功,融云的环境和 App 的 provisioning profile 一定要匹配才行。

我对此仍有疑问!继续追问