生产环境下iOS极光推送 开发环境为什么有的时候收不到的情况

iOS端极光推送开发环境收到,生产环境收不到推送 - 简书
iOS端极光推送开发环境收到,生产环境收不到推送
总结起来就是:证书-&初始化方法-&后台
记录一下这次的问题啊,当时给我吓出一身冷汗啊,感觉如果上线的版本再收不到推送的话,老板得砍死我啊!!!
首先阐述一下我的问题
先来说一下我的项目:定位是餐厅服务员的辅助app,受众面比较少,公司的新项目,一边推广一边开发
项目用的是极光推送,第一次用嘛,有点生疏。费了九牛二毛之力才把生产证书和开发证书都弄好了,测试的时候也收到通知推送了,安心地上架了。
然而问题才刚刚开始,办公室偶尔会有同事说收不到头部通知,但是包括我在内的大多数人都说收到通知,这些问题就被认为是特别事件,被当做个人手机原因而不了了解了(后来发现办公室里为什么能收到顶部通知呢?因为都是我给他们装的测试)
陆续有客户反映了,问题也就暴露了,原来所有从App Store下载的都收不到顶部推送,但是能收到自定义推送,我也懵逼了,脑子里不停地遍历可能的原因,证书?后台?
先从证书的原因开始找
总结一下证书怎么找原因:
PS:在极光的初始文档中,我们都有设置过别名,忘了就得花点时间翻翻代码(或者发所有人,记住别影响到客户),记得,开发环境和生产环境都发一下看看
经过排查,我两个环境都能被准确地识别啊,证书没问题,那哪里还有问题呢?博主也上网找了不少的文章去了解
极光的初始设置方法
在AppDelegate.m的initJPush方法中
[JPUSHService setupWithOption:launchOptions appKey:JPushAppKey channel:@"App Store" apsForProduction:versionFlag];
apsForProduction
1.3.1版本新增,用于标识当前应用所使用的APNs证书环境。
0 (默认值)表示采用的是开发证书,1 表示采用生产证书发布应用。
注:此字段的值要与Build Settings的Code Signing配置的证书环境一致。
这里其实项目之初就弄好了,但是后来反而忘了更改这个0,建议大家建个字段,在测试和上线两个版本来回切换
好了,满心期待地发布新版本,再上架,过两天再看看
修正初始化方法后,革命仍不能成功
这就是我开始奔溃的源头,一波三折,损心劳力,又看了一遍网上的文章
这位博主(侵权删)和我遇到一模一样的问题,不过他家的后台是PHP写的,而我家是Java写的后台。通篇看下来,我的矛头直指后台
问题出来了,原来后台一直给我发的顶部通知都发去了开发环境ios-dev中去了,而我们的目标是ios-product,这里,后台的apns_production字段必须为true
找后台理论后,后台给我发了一段代码
后台也和我一样是一个新人,他的意思是他是根据官方文档做得platform.all()这个方法就是默认给全部机器发送通知
后来经过产品经理的一番调试,发现了,原来platform.all()这个方法,默认发送全部机器,但是,默认的iOS端是生产环境,这就是全部问题的由来.....
记得全局搜索,全部都要改
PS:这个apns_production置1和0手机端和后台必须保持一致
好了,终于松了好几口气
走,我们一起去探险域名与网站(万网)
数加-数据分析展现
数加-人工智能
管理与监控
阿里云办公
互联网中间件
数加-大数据基础服务
数加-数据应用
开发者工具
培训与认证
&&&&&&&&&移动推送 iOS SDK: App未上架,iOS生产环境如何测试推送通知功能?
移动推送 iOS SDK: App未上架,iOS生产环境如何测试推送通知功能?
更新时间: 19:44:17&&&分享:&&&
在官网文档中,我们介绍了测试环境的iOS。
如果想在生产环境测试iOS推送通知的功能,可基于Ad Hoc App进行测试,参考
本文导读目录
本文导读目录
&&&&亲,您必须在登录或者注册后才能填写反馈哦!
&&&& &匿名提交生产环境下iOS推送为什么有的时候收不到的情况? - 知乎9被浏览3454分享邀请回答还没有回答极光推送IOS无法推送到生产环境问题的解决-爱编程
极光推送IOS无法推送到生产环境问题的解决
在使用极光进行消息推送的过程中,在系统上线的时候发现IOS用户没有接收到消息推送,各种排查后找到极光控制台,查看推送记录,发现如下情况:
解决方法如下,再使用单例获取消息推送核心类的时候,将客户端配置实例的apnsProduction属性设置为true:
private static JPushClient jpushClient =
public static JPushClient getJPushClient() {
if (jpushClient == null) {
synchronized(JpushHelper.class) {
if (jpushClient == null){
ClientConfig instance = ClientConfig.getInstance();
//设置了该配置项,在进行消息推送的时候才能推送到IOS的生产环境
instance.setApnsProduction(true);
jpushClient = new JPushClient(MASTER_SECRET, APP_KEY, null, instance);
return jpushC
具体集成过程参照:https://my.oschina.net/u/2988360/blog/842687或者极光官网
版权所有 爱编程 (C) Copyright 2012. . All Rights Reserved.
闽ICP备号-3
微信扫一扫关注爱编程,每天为您推送一篇经典技术文章。问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
在开发环境消息推送没有问题,但是在生产环境下就接收不到了。具体要怎么测试呢?菜鸟表示不是很懂
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
不论是什么推送,最终用的都是苹果的APNS,这些服务只是帮你搭建了环境。所以只要保证正式环境的推送证书是对的就没问题,表现和测试环境的是一样的。而且证书随时可以换的。
分享到微博?
Hi,欢迎来到 SegmentFault 技术社区!⊙▽⊙ 在这里,你可以提出编程相关的疑惑,关注感兴趣的问题,对认可的回答投赞同票;大家会帮你解决编程的问题,和你探讨技术更新,为你的回答投上赞同票。
明天提醒我
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:

我要回帖

更多关于 友盟推送生产环境测试 的文章

 

随机推荐