Я работаю над мобильным приложением NativeScript, в котором я использую nativescript-plugin-firebase
для получения токена Firebase, который я затем отправляю в Adobe Mobile Services, чтобы можно было отправлять push-уведомления оттуда пользователямобе платформы (Android и iOS):
FirebasePlugin.init({
onMessageReceivedCallback: () => { ... },
onPushTokenReceivedCallback: (token: string) => {
AdobeAnalytics.getInstance().optIn();
AdobeAnalytics.getInstance().setPushIdentifier(isAndroid ? token : new NSData({ base64Encoding: token }));
}
});
Это прекрасно работает на Android, где я могу затем отправлять уведомления из AMS на отдельные устройства с помощью токена или на несколько с использованием сегментов AMS.
Однако в iOS он работает только с использованием токена, поскольку AMS считает, что устройства iOS не зарегистрированы.Запросы, вызванные setPushIdentifier
, возвращают 200 OK
и что-то подобное на обеих платформах:
{
"d_blob": "...",
"d_mid": "...",
"d_ottl": 7200,
"dcs_region": 6,
"ibs": [],
"id_sync_ttl": 604800,
"subdomain": "mysandbox",
"tid": "..."
}
Я использую модифицированную версию nativescript-adobe-marketing-cloud
1.5.0
, которая выставляет это setPushIdentifier
, но реализация не меняется.
Я также пытался заменить nativescript-plugin-firebase
на push-plugin
, и в этом случае я получаю токен APN при использовании iOS вместоFirebase one:
PushPlugin.init({
onMessageReceivedCallback: () => { ... },
onPushTokenReceivedCallback: (token: string) => {
AdobeAnalytics.getInstance().optIn();
AdobeAnalytics.getInstance().setPushIdentifier(isAndroid ? token : new NSData({ base64Encoding: token }));
}
});
Но происходит то же самое.