欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

iOS 【极光推送】第一次打开app,收不到推送消息

程序员文章站 2022-05-23 21:18:54
1.问题 手机初次安装app后,极光推动也注册成功了,别名也设置了,后台也传别名给他了,可是收不到推送消息,但是杀死app再次近入,推送一切就正常了,一直以为是后台的问题,后来才发现这是一个坑。...

1.问题

手机初次安装app后,极光推动也注册成功了,别名也设置了,后台也传别名给他了,可是收不到推送消息,但是杀死app再次近入,推送一切就正常了,一直以为是后台的问题,后来才发现这是一个坑。

在我们首次首次进入app时我们会去极光注册登录,这个结果的返回是异步的,而设置别名时,注册登录还没返回成功,所以我们的别名是设置失败的(可在极光后台测试,会提示没有这个别名),第二次近入,因为已经注册登录成功了,所以一切就正常了

解决办法: 极光提供了登录成功的通知,我们可以收到通知后再去设置别名,这个时候就没有问题了

2.解决

iOS 【极光推送】第一次打开app,收不到推送消息

- (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];
}