В настоящее время я работаю над проектом, который позволяет пользователю получать 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"];
}
Что делать, если соединение происходит медленно? это может случится? –
В идеале он возвращает null, только если у вас нет подключения к Интернету. Скорость не имеет значения. –
Но в моем случае нулевой токен, сохраненный на нашем сервере после получения нулевого токена устройства, означает, что у устройства есть подключение к Интернету. –