JPush iOS 客户端注意事项

Jicon.png

如果你刚开始集成、使用JPush iOS SDK,你可能会遇到各种各样的问题,下面就罗列几个注意事项,给大家作为参考:

1、

从iOS9系统开始,使用通配证书也能成功获取到Token,但是无法收到推送的通知(APNs);

注:
JPush iOS SDK 从2.1.7版本开始,如果当前应用不具备推送功能会打印:PUSH | W - [JPUSHClientController] APNs is not available,please check your provisioning profile and certification

2、

运行安装项目到测试设备,假设你的Provisioning Profile选择自动,如果测试设备是iOS9系统,且本地的Provisioning Profile不含此设备,仍能正常运行安装到测试设备并获取到Token!其实你这时安装的是通配证书的应用,你将无法收到APNs推送;请参考JPush的教程文档配置项目证书:XCode的证书配置教程

注:
JPush iOS SDK 从2.1.7版本开始,如果当前应用不具备推送功能会打印:PUSH | W - [JPUSHClientController] APNs is not available,please check your provisioning profile and certification

3、

从iOS9系统开始,每次卸载安装都会获取到新的Token。如果你没有使用传IDFA的JPush初始化接口,那JPush会认为你当前是一个新的设备,RegistrationId会随之改变,之前设置的tag、alias需要重新设置;

4、

从iOS9系统开始,新安装某个调用apns注册接口的应用,弹出[“xxx”想给您发送推送通知]的提示时,无论你是否允许,应用都能获取到Token;

5、

JPush没有提供开关推送的接口,但是可以调用apple的注册APNs接口和反注册APNs接口来设置是否有通知提醒!

注:从iOS9.3系统开始,调用代码注册APNs,再调用反注册APNs接口,再调用注册APNs接口,需要把应用进程杀掉,重新开启才能恢复APNs提示;

6、

JPush iOS SDK从2.1.8版本开始支持https,如集成的SDK 版本低于2.1.8,请到xxx-info.plist里面配置下http,否则无法统计通知点击和调用JPUSHService setBadge:<#(NSInteger)#>来上报badge,具体配置看文档:https解决方式

7、

如果你是直接运行安装到测试设备(运行调试状态),那你的安装的应用的证书环境只有可能是开发环境或者通配的。向该设备(RegistrationID)推送开发环境的通知,如果能收到(目标和成功为:1/1),则说明是当前安装的应用是开发环境的证书;如果目标和成功为(0/0),则可能是通配证书。应用证书环境具体以Code Signing配置为准:


4C2C57D9-3AA0-4D74-BE68-04B9F02088A1.png

8、

如果你想内部测试生产环境的推送,请去apple上面为该appid创建一个AD-Hoc的Provisioning Profile,下载添加到XCode,Archive项目,导出ipa文件,把该ipa拖到iTunes,再同步到测试设备。
导出的时候下图标注的Profile必须是你所创建的AD-Hoc Profile:

0977C06F-E68A-450A-83CD-901D1D7D7031.png

9、

第7、8点说到安装应用证书环境的判断依据,那这里再说明下:推送的时候如何指定iOS通知的推送环境。
进入官方控制台的发送通知页面,可通过如下选项指定iOS通知的推送环境:


777F7275-CEB4-4427-8A74-CCC1D6335832.png

如果你通过api推送,则需要注意options下面的apns_production字段。官网发送通知的

777F7275-CEB4-4427-8A74-CCC1D6335832.png

对应的"apns_production":flase和"apns_production":true(请看:推送api文档java示例代码

75156F5A-A0E3-46B5-9471-BFA02ADD6E8A.png

iOS Push SDK的初始化接口:
+ (void)setupWithOption:(NSDictionary *)launchingOption
                 appKey:(NSString *)appKey
                channel:(NSString *)channel
       apsForProduction:(BOOL)isProduction;

注:
项目中配置的证书环境决定你的app能收到来自哪个环境的通知(APNs);
初始化接口的isProduction字段需要与你应用配置的证书环境一致。

即:
如果按照第7点的配置证书,isProduction的值应该是false;
如果按照第8点的配置证书,isProduction的值应该是true;
如果发布到App Store,,isProduction的值应该是true。

10、

请不要在初始化应用的方法

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
....
}

里面设置tag、alias和获取registrationID ,如果你在这里设置tag、alias和获取registrationID,你将无法获取到registrationID,设置tag、alias会打印:E - [JPUSHService] app not registed, give up set tag:xxx,alias:xxx

建议如下:


F11E5F11-4EEB-4599-80F1-F7BA5FA4EEEF.png

注:想了解集成文档的[五个监听]请戳我
如不知道该如何添加监听,请参考官方 demo的:RootViewController.m;

11、

应用前台运行的时候收到APNs不会有提示(横幅、sound),只会调用apple提供的APNs获取接口:获取 APNs(通知) 推送内容,如果想弹出提示请自己在获取接口里面写代码处理;

12、

后台收到普通APNs,点击icon进入应用并不会触发APNs获取接口,只有点击APNs才会触发获取接口;

13、

从JPush下的发iOS自定义消息,只有在前台运行的时候才能收到(不会有apns提示),如果想要获取由JPush 下发的自定义消息,请看:获取自定义消息推送内容

注:如果想了解通知和自定义消息的区别请看:常见问题 的[通知与自定义消息有什么区别?]

14、

建议在AppDelegate.m的applicationWillResignActive方法写代码调整本地的badge显示和重置JPush服务器上面Badge值,示例代码如下:

- (void)applicationWillResignActive:(UIApplication *)application {
  
        [JPUSHService setBadge:0];//重置JPush服务器上面的badge值。如果下次服务端推送badge传"+1",则会在你当时JPush服务器上该设备的badge值的基础上+1;
        
        [[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];//apple自己的接口,变更应用本地(icon)的badge值;
}

注:
1)JPush的badge上报接口可根据实际使用场景计算再调用接口上报;
2)应用icon上显示的badge最好在applicationWillResignActive方法里面设为最终计算所得的值。

15、

如果你之前能正常推送iOS通知,忽然所有推送记录的结果都变成了:0/0。这个时候你需要去到JPush控制台,进入该应用的 [应用设置]页面,检查证书的有效期,如果没有过期,则去到apple账号检查该证书是否还在(以appid+有效期来看)

注:无论是上述何种原因,你都需要在apple账号上下载该bundle id的有效APNs证书,添加到本地,导出p12文件,上传到JPush官网

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,390评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,821评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,632评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,170评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,033评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,098评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,511评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,204评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,479评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,572评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,341评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,893评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,171评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,486评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,676评论 2 335

推荐阅读更多精彩内容