APNS和token的那些事

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Number_One_2015/article/details/88316868

关于deviceToken的改变,有三种情况:

1.在用户在新的设备上登陆

2.更新设备操作系统的时候

3.app卸载重装

解决方法:

我主要在主页进行update token api,但是也有在检测到action payment,解锁APP(输错密码三次之后)之后,登录成功等各种需要接受推送的地方 set isNeedForceUpdateAPN = YES,一旦进入主页,就会根据判断去执行update token api。。

除了以上还会setIsWalletBecomeActiveFromLaunching 判断是否执行update token api

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

    [[PGDataManager sharedInstance] setIsWalletBecomeActiveFromLaunching:YES];

}

- (void)applicationDidEnterBackground:(UIApplication *)application {

    [[PGDataManager sharedInstance] setIsWalletBecomeActiveFromLaunching:NO];

}

这两个方法会在kill掉app的时候执行,如果只是home键出来,再进入是不会调用 didFinishLaunchingWithOptions的

最后:token的获取:::

- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {

    DDLogDebug(@"<%@> %@ [error:%@]", NSStringFromClass([self class]), NSStringFromSelector(_cmd), error);

    if ([[[UIDevice currentDevice] model] isEqualToString:@"iPhone Simulator"]) {

        [[PGDataManager sharedInstance] setKeychainWithKey:kKeychainKeyAPNToken value:@"token"];

    }

}

-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {

    DDLogDebug(@"<%@> %@ [deviceToken:%@]", NSStringFromClass([self class]), NSStringFromSelector(_cmd), deviceToken);

    NSString *token = [[deviceToken description] stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]];

    token = [token stringByReplacingOccurrencesOfString:@" " withString:@""];

    [[PGDataManager sharedInstance] setKeychainWithKey:kKeychainKeyAPNToken value:token];

}

OK,今天的解释到这里啦,

猜你喜欢

转载自blog.csdn.net/Number_One_2015/article/details/88316868