iOS 两种环境测试的相关知识

涉及到客户端和服务端,服务端的开发童鞋请往下翻一翻,看第二点。


客户端

  1. 客户端安装的 App 实际对应什么环境,是由打包 ipa 时候选择的证书决定的。

  2. 初始化时,apsForProduction:isProduction 必须和你打包选择的证书一一对应进行配置,虽然不是决定 App 环境的的因素,但若不一一对应后期可能会出问题,所以请一一对应。

  3. AppStore 下载的、adhoc、in-house 等证书打包为生产环境。如果你是直接运行安装到测试设备(运行调试状态),那你的安装的应用的证书环境只有可能是开发环境或者通配的。

  4. 一个手机上安装的一个 App 只有一种环境,不可能同时拥有两种环境

  5. 在官网上测试推送,该 App 能收到哪一个环境的消息,则代表他此时就是什么环境的,则必然收不到另一个环境的消息。

生产环境测试,客户端的两种姿势:

1、打包出来,安装测试。(请务必选择这种方式!)
http://www.jianshu.com/p/94e581861707
2、用 Xcode 将 App 安装到手机上,然后手动点击手机上的 App 图标让他运行,然后做推送测试。(强烈不建议这样测试生产环境,因为一般是做不到正确配置,且并不能看实时日志,也没有必要。)

重要说明:Xcode 里面的设置:

  • 证书需要设置为发布证书;

  • run 也需要设置为 release,选了 release 以后就可以直接 run 一个生产证书的包;

  • 设置成功的表现:

    • 无法直接启动,只能手动点击 App 图标启动(如果不是这样的,说明你还是 debug 状态,最好就直接打包出来测试!)
    • 在生产环境下启动,是 不能在控制台实时看到日志的

服务端

  • 官网推送选择 生产环境、开发环境;推送成功后在推送历史-推送平台中 ios 代表开发环境,ios-product 代表生产环境

  • API 推送设置可选参数 options——环境参数 apns_production,true 为生产、false 是开发,请务必注意参数类型是 Boolean ,不是字符串或其他。点我
    强烈建议手动配置该字段,而不是保持默认,各 SDK 的默认配置或许是不一样的。

  • JSON 示例文档;服务端 SDK 参考 example:JavapythonC#php

  • 推送消息后可以在官网-应用-推送历史-操作-详情展开看平台环境实际是什么(iOS-product 代表生产),如果与你认为的不一致,去检查你的代码。

如果根据上述说明一一处理后,在推送某环境的消息成功后,但客户端收不到消息,请阅读本帖进行二次排查,并提供官方所需要的排查信息!(MessageID 和 registrationID)



如果对你有帮助,点个赞 呗ლ(╹◡╹ლ)

点这里返回常见问题目录,不吹不黑,收藏本帖可以解决你 90% 的问题 (ノ◕ω◕)ノଘ_ଘ