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