Я пытаюсь зарегистрировать 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 обходных пути для решения этой проблемы (но я не уверен, если работает.):
- Обходной путь : Не знаю, но если смогу, сначала не зарегистрируюсь, а когда пользователь войдет в систему, я получу deviceTokenна IOS, и я постараюсь зарегистрироваться на NotificationHub.
- Обходной путь : Я отправлю свой deviceToken для прямого бэкенда с restApi и backEnd, чтобы соединить пользовательские теги и deviceToken.
Извините, но все смешалось, ноМне нужно решить это.Также извините за мой английский:).