Проблема регистрации NotificationHub в IOS (React Native) - PullRequest
0 голосов
/ 23 сентября 2019

Я пытаюсь зарегистрировать messagesHub из React Native.Я создал NativeModule и отправляю connectionString , hubName , теги и deviceToken - deviceToken был сохраненна AsyncStorage (я получаю deviceToken до того, как пользователь вошел в систему, и я не могу зарегистрировать Notification Hub без тега пользователя (например, scholarshipID), поэтому я сохраняю deviceToken для дальнейшего использования. Поскольку я не могу отправить пользователятеги на didRegisterForRemoteNotificationsWithDeviceToken из RN)

После входа в систему я получаю идентификатор пользователя scholarship & deviceToken и отправляю в собственный модуль для регистрации в NotificationHub.

 // deviceToken:(NSString *)tokenForLaterUsage

 [hub
   registerNativeWithDeviceToken:tokenForLaterUsage
   tags:self->_tags
   completion:^(NSError* error)
   {
     if (error != nil) {
       NSLog(@"Error registering for notifications: %@", error);
     }else{
       NSLog(@"Success");
     }
   }];

My tokenForLaterUsage является строкой, и если я пытаюсь использовать напрямую, приложение вызывает сбой.Поскольку NotificationHub функция регистра ожидает NSData , поэтому я преобразую NSString в NSData следующим образом:

    NSData* data = [tokenForLaterUsage dataUsingEncoding:NSUTF8StringEncoding];

После этого я захожу на портал Azure и пытаюсь отправить уведомление, но система сообщает, что устройство не найдено.

Кстати: когда я пытаюсь зарегистрироваться на NotificationHub здесь: didRegisterForRemoteNotificationsWithDeviceToken это работает хорошо но я не могу установить теги, так что это не для меня.Отсюда я просто получаю deviceToken для дальнейшего использования.

-

примечание: я думаю, что 2 обходных пути для решения этой проблемы (но я не уверен, если работает.):

  1. Обходной путь : Не знаю, но если смогу, сначала не зарегистрируюсь, а когда пользователь войдет в систему, я получу deviceTokenна IOS, и я постараюсь зарегистрироваться на NotificationHub.
  2. Обходной путь : Я отправлю свой deviceToken для прямого бэкенда с restApi и backEnd, чтобы соединить пользовательские теги и deviceToken.

Извините, но все смешалось, ноМне нужно решить это.Также извините за мой английский:).

1 Ответ

0 голосов
/ 24 сентября 2019

Наконец я нашел ответ.

Сначала, когда генерируется deviceToken , я сохраняю в NSUserDefaults

NSUserDefaults *userPreferences = [NSUserDefaults standardUserDefaults];
[userPreferences setObject:deviceToken forKey:@"deviceToken"];
[userPreferences synchronize];

И когда пользователь входит в систему, я получаю deviceToken отNSUserDefault в NativeModules и отправка в NotificationHub.

NSData *token = [[NSUserDefaults standardUserDefaults] objectForKey:@"deviceToken"];
...