iOS 【极光推送】第一次打开app,收不到推送消息
程序员文章站
2023-01-11 20:39:00
1.问题
手机初次安装app后,极光推动也注册成功了,别名也设置了,后台也传别名给他了,可是收不到推送消息,但是杀死app再次近入,推送一切就正常了,一直以为是后台的问题,后来才发现这是一个坑。...
1.问题
手机初次安装app后,极光推动也注册成功了,别名也设置了,后台也传别名给他了,可是收不到推送消息,但是杀死app再次近入,推送一切就正常了,一直以为是后台的问题,后来才发现这是一个坑。
在我们首次首次进入app时我们会去极光注册登录,这个结果的返回是异步的,而设置别名时,注册登录还没返回成功,所以我们的别名是设置失败的(可在极光后台测试,会提示没有这个别名),第二次近入,因为已经注册登录成功了,所以一切就正常了
解决办法: 极光提供了登录成功的通知,我们可以收到通知后再去设置别名,这个时候就没有问题了
2.解决
- (bool)application:(uiapplication *)application didfinishlaunchingwithoptions:(nsdictionary *)launchoptions { //注册极光 [jpushservice setupwithoption:launchoptions appkey:appkey channel:channel apsforproduction:isproduction advertisingidentifier:nil]; //jpush 监听登陆成功 [[nsnotificationcenter defaultcenter] addobserver:self selector:@selector(kjpushnetworkdidlogin:) name:kjpfnetworkdidloginnotification object:nil]; }
/** * 登录成功,设置别名,移除监听 * * @param notification 信息 */ - (void)kjpushnetworkdidlogin:(nsnotification *)notification { nslog(@"极光推送已登录"); //本处用的token做为别名 [jpushservice setalias:self.pushtokenstr callbackselector:nil object:nil]; [[nsnotificationcenter defaultcenter] removeobserver:self name:kjpfnetworkdidloginnotification object:nil]; }
上一篇: 妹纸,别着凉来我们家睡吧