-1

В настоящее время я работаю над проектом, который позволяет пользователю получать push-уведомления, когда есть что-то новое в учетной записи пользователя. Я использую Parse в качестве службы push push. У меня нет проблем до недавнего времени, когда наш сервер начал получать пустое устройство токена при каждой регистрации push-уведомлений, эта проблема не всегда происходит. Поэтому, когда я попробовал приложение на своем устройстве, он просто запускается как следует, но когда мое приложение протестировано на нашем клиентском устройстве, наш сервер получает пустые устройства токена для этого клиента. Как это может произойти? Как я могу это исправить? И как лучше всего получить и установить токен устройства?Получать нулевой токен устройства иногда

Вот мой код в AppDelegate:

- (void) application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken{ 
const unsigned *tokenBytes = [deviceToken bytes]; 
NSString *token = [NSString stringWithFormat:@"%08x%08x%08x%08x%08x%08x%08x%08x", 
          ntohl(tokenBytes[0]), ntohl(tokenBytes[1]), ntohl(tokenBytes[2]), 
          ntohl(tokenBytes[3]), ntohl(tokenBytes[4]), ntohl(tokenBytes[5]), 
          ntohl(tokenBytes[6]), ntohl(tokenBytes[7])]; 

//function for saving device token to server 
[[ASEngine defaultEngine] setCurrentDeviceToken:token]; 
if([[ASEngine defaultEngine] currentCredential] != nil) { 
    [[ASEngine defaultEngine] webStoreDeviceToken:token]; 

} 

//save current instalation to parse 
PFInstallation *currentInstallation = [PFInstallation currentInstallation]; 
[currentInstallation setDeviceTokenFromData:deviceToken]; 
[currentInstallation saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) { 
    NSLog(@"Error e current installation: %@", error); 
}]; 

//save device token locally 
[[NSUserDefaults standardUserDefaults] setObject:deviceToken forKey:@"deviceToken"]; 
} 

ответ

0

Иногда это происходит, когда устройство не подключено к Интернету. Убедитесь, что ваше устройство подключено к Интернету.

+0

Что делать, если соединение происходит медленно? это может случится? –

+0

В идеале он возвращает null, только если у вас нет подключения к Интернету. Скорость не имеет значения. –

+0

Но в моем случае нулевой токен, сохраненный на нашем сервере после получения нулевого токена устройства, означает, что у устройства есть подключение к Интернету. –

3

Пустой токен никогда не будет сгенерирован iOS предоставляет метод didFailToRegisterForRemoteNotificationsWithError, который, вероятно, вызывается в вашем случае, обязательно проверьте его на наличие ошибок при создании токенов.

+0

Итак, вы предлагаете мне запросить другой токен устройства внутри didFailToRegisterForRemoteNotificationsWithError? –

Смежные вопросы