推送通知令牌生成可能比预期花费更多时间

时间:2017-11-29 11:26:15

标签: ios objective-c apple-push-notifications

我在项目中实现了推送通知,我正确地获得了推送通知令牌。我正在使用login api发送此令牌。

-(void)application:(UIApplication* )application didRegisterForRemoteNotificationsWithDeviceToken:(NSData* )deviceToken
{
    NSString *devToken = [[deviceToken description] stringByTrimmingCharactersInSet:
        [NSCharacterSet characterSetWithCharactersInString:@"<>"]];
    devToken = [devToken stringByReplacingOccurrencesOfString:@" " withString:@""];
    NSLog(@"token: %@",devToken);

    self.pushNotificationToken = devToken;

    [[NSUserDefaults standardUserDefaults] setObject:devToken forKey:@"PushToken"];
    [[NSUserDefaults standardUserDefaults] synchronize];
}

我完全得到了令牌。但有一段时间我认为生成令牌可能需要更长的时间。因为登录api不包含令牌。我已经检查了存储令牌的数据库。有一段时间是NULL。当我注销并登录时,数据库包含令牌并且工作正常。将推送令牌发送到服务器的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

在尝试此方案后,可以随时使用推送令牌生成。没有特定的持续时间。大多数情况下,它会在应用程序启动时生成,但我们无法确保。当我们在代理中获得令牌时,更好地调用api

-(void)application:(UIApplication* )application didRegisterForRemoteNotificationsWithDeviceToken:(NSData* )deviceToken
{
    NSString *devToken = [[deviceToken description] stringByTrimmingCharactersInSet:
        [NSCharacterSet characterSetWithCharactersInString:@"<>"]];
    devToken = [devToken stringByReplacingOccurrencesOfString:@" " withString:@""];
    NSLog(@"token: %@",devToken);

     //Call API to Update Device Token
}

在生成令牌时调用api更新令牌。