Не получил PN в версии iOS. отлично работает в разработке

Я пытаюсь интегрировать https://github.com/phonegap/phonegap-plugin-push, но не могу заставить его работать в режиме релиза. Не удается получить push-уведомление при развертывании приложения в TestFlight или магазине. Уведомление, кажется, работает нормально, когда в режиме разработки.

Я следовал инструкциям по установке подключаемого модуля Push, как указано здесь: https://github.com/phonegap/phonegap-plugin-push/blob/master/docs/INSTALLATION.md

Платформа и версия

iOS 11.2.6

Cordova CLI версия

cordova --version
    8.0.0

Версия платформы Cordova

Installed platforms:
    android 7.1.0
    ios 4.5.4

версия плагина Cordova | grep phonegap-plugin-push # например 1.5.3 phonegap-plugin-push 2.2.2 "PushPlugin"

Пример Push Data Payload

Отправка любой полезной нагрузки не работала. Я пытался отправить PN с консоли Firebase, а также с pushtry.com

Журналы, сделанные при воспроизведении проблемы

Это журналы, которые я могу собрать из развернутой версии, используя https://www.npmjs.com/package/cordova-plugin-native-logs

Push.init вызывается, когда пользователь входит в систему.

Первая попытка входа - приложение только что установлено

2018-04-02 14:01:43.976 [432:123186] [CDVTimer][nativelogs] 0.962973ms
2018-04-02 14:01:43.979 [432:123186] [CDVTimer][TotalPluginStartup] 45.592070ms
2018-04-02 14:01:43.988 [432:123186] createNotificationChecker
2018-04-02 14:01:43.988 [432:123186] coldstart
2018-04-02 14:01:44.463 [432:123186] active
2018-04-02 14:01:44.464 [432:123186] PushPlugin skip clear badge
2018-04-02 14:01:45.353 [432:123186] Ionic Native: deviceready event fired after 296 ms
2018-04-02 14:01:46.926 [432:123186] CDVWKWebViewEngine: handleStopScroll
2018-04-02 14:01:48.191 [432:123186] {"headers":{"normalizedNames":{},"lazyUpdate":null},"status":400,"statusText":"Bad Request","url":"1.0/user-details","ok":false,"name":"HttpErrorResponse","message":"Http failure response for https://api.example.com/1.0/user-details: 400 Bad Request","error":{"error":"token_not_provided"}}
2018-04-02 14:02:09.478 [432:123186] -[UIWindow endDisablingInterfaceAutorotationAnimated:] called on <UIRemoteKeyboardWindow: 0x1058ae600; frame = (0 0; 414 736); opaque = NO; autoresize = W+H; layer = <UIWindowLayer: 0x1c4035800>> without matching -beginDisablingInterfaceAutorotation. Ignoring.
2018-04-02 14:02:17.532 [432:123186] CDVWKWebViewEngine: handleStopScroll
2018-04-02 14:02:18.754 [432:123186] this.pages is called
2018-04-02 14:02:18.754 [432:123186] register push called
2018-04-02 14:02:18.763 [432:123186] Push Plugin VoIP missing or false
2018-04-02 14:02:18.764 [432:123216] Push Plugin register called
2018-04-02 14:02:18.764 [432:123216] PushPlugin.register: setting badge to false
2018-04-02 14:02:18.764 [432:123216] PushPlugin.register: clear badge is set to 0
2018-04-02 14:02:18.764 [432:123216] PushPlugin.register: better button setup
2018-04-02 14:02:18.767 [432:123216] FCM Sender ID 16--752--616
2018-04-02 14:02:18.767 [432:123216] Using FCM Notification
2018-04-02 14:02:18.902 [432:123186] FCM token is null
2018-04-02 14:02:18.907 [432:123186] Push Plugin register failed
2018-04-02 14:02:19.266 [432:123186] updating address
2018-04-02 14:02:20.084 [432:123186] active
2018-04-02 14:02:20.084 [432:123186] PushPlugin skip clear badge
2018-04-02 14:02:20.691 [432:123186] The FCM registration token needs to be changed.
2018-04-02 14:02:20.699 [432:123186] FCM Registration Token: cuB6DZDZMxs:APA91bHjReRv-TrwFHxsbVVAj5xeHCh56VhVEDtQ2pcLwWUrcttsA8AkOri-M3TBxXPbnkO9VsFSr1Iqzs6oOYHowx8NlEW4N3MflU5nt678vhwPanGHs4ocnq-KhvWvarSS77g_Efq2
2018-04-02 14:02:22.045 [432:123186] Returning local object of class NSString
2018-04-02 14:02:22.071 [432:123186] THREAD WARNING: ['NativeLogs'] took '47.340088' ms. Plugin should use a background thread.
2018-04-02 14:13:48.080 [432:123642] PBItemCollectionServicer connection disconnected.
2018-04-02 14:13:48.617 [432:123186] active
2018-04-02 14:13:48.617 [432:123186] PushPlugin skip clear badge
2018-04-02 14:13:52.489 [432:123186] {"headers":{"normalizedNames":{},"lazyUpdate":null},"status":400,"statusText":"Bad Request","url":"https://api.example.com/1.0/resident/deregister-device","ok":false,"name":"HttpErrorResponse","message":"Http failure response for https://api.example.com/1.0/resident/deregister-device: 400 Bad Request","error":{"errors":{"device_token":["validation.required"]}}}

Выйти и вторая попытка входа

2018-04-02 14:13:52.502 [432:123186] updating address
2018-04-02 14:14:11.868 [432:123186] CDVWKWebViewEngine: handleStopScroll
2018-04-02 14:14:13.181 [432:123186] this.pages is called
2018-04-02 14:14:13.182 [432:123186] updating address
2018-04-02 14:14:13.182 [432:123186] register push called
2018-04-02 14:14:13.196 [432:123186] Push Plugin VoIP missing or false
2018-04-02 14:14:13.196 [432:127400] Push Plugin register called
2018-04-02 14:14:13.196 [432:127400] PushPlugin.register: setting badge to false
2018-04-02 14:14:13.196 [432:127400] PushPlugin.register: clear badge is set to 0
2018-04-02 14:14:13.197 [432:127400] PushPlugin.register: better button setup
2018-04-02 14:14:13.201 [432:127400] FCM Sender ID 16--752--616
2018-04-02 14:14:13.201 [432:127400] Using FCM Notification
2018-04-02 14:14:13.206 [432:123186] FCM Registration Token: cuB6DZDZMxs:APA91bHjReRv-TrwFHxsbVVAj5xeHCh56VhVEDtQ2pcLwWUrcttsA8AkOri-M3TBxXPbnkO9VsFSr1Iqzs6oOYHowx8NlEW4N3MflU5nt678vhwPanGHs4ocnq-KhvWvarSS77g_Efq2
2018-04-02 14:14:13.207 [432:123186] Push Plugin register failed
2018-04-02 14:14:13.216 [432:123186] registeration push [object Object]
2018-04-02 14:14:13.764 [432:123186] updating address

Подробнее

Это мой код инициализации

this.push = PushNotification.init({
  android: {
    senderID: '168675298616',
    iconColor: '#488aff',
    clearNotifications: false,
  }
});

this.push.on('registration', (registration) => {
  console.log('registeration push', registration);
  const device = {
    device_token: registration.registrationId,
    device_type: this.platform.is('android') ? 'android' : 'ios'
  };

  this.userService.pushInit(device).subscribe(response => {
    localStorage.setItem('device_token', registration.registrationId);
  }, err => {
    console.log('silently handling registration error. :)');
  });
});

this.push.on('notification', (notification) => {
  console.log("notification", notification);

  let userdata: any = JSON.parse(localStorage.getItem('userData'));
  let addresses: any[] = userdata.member_info.addresses;
  let behaviorAddress = addresses.find(x => x.hoa_id === JSON.parse(notification.additionalData.hoa_id));
  console.log("behaviorAddress", behaviorAddress);

  if (!notification.additionalData.foreground) {
    // Do Something
  }
});

У меня есть настройка Firebase с использованием ключа аутентификации APNs введите описание изображения здесь

И вот как выглядят возможности:

Xcode: введите описание изображения здесь

Разработчик Apple: введите описание изображения здесь

Всякий раз, когда я доставляю приложение через XCode, я получаю это письмо: введите описание изображения здесь

А что касается электронной почты, это то, как выглядит мое право на "aps-environment": введите описание изображения здесь

Кроме того, я просто не могу настроить aps-среду на производство, она просто возвращается к разработке.

Любая помощь в правильном направлении будет принята с благодарностью.

1 ответ

Решение

Я на самом деле понял это. Проблема была во время сборки Cordova ссылается на неверный файл прав.

Правильный файл разрешений находится по адресу: /.entitlements, а Cordova ссылается на: /Resources/.entitlements

Тот, в / Ресурсы не имеет aps-environment,

Вот так выглядят настройки сборки cordova build

Другие вопросы по тегам