DidReceiveNotificationRequest в не вызывается - PullRequest
2 голосов
/ 28 октября 2019

У меня есть приложение форм xamarin, и при получении уведомления от сервера расширение службы уведомлений ios не вызывается.

На данный момент я выполнил следующие действия:

  1. Добавили mutable-content = 1 в полезную нагрузку apns.

  2. Так я манипулирую полезной нагрузкой apns в службе

    public class NotificationService : UNNotificationServiceExtension
    {
        Action<UNNotificationContent> ContentHandler { get; set; }
        UNMutableNotificationContent BestAttemptContent { get; set; }

        protected NotificationService(IntPtr handle) : base(handle)
        {

        }

        public override void DidReceiveNotificationRequest(UNNotificationRequest request, Action<UNNotificationContent> contentHandler)
        {
            ContentHandler = contentHandler;
            BestAttemptContent = (UNMutableNotificationContent)request.Content.MutableCopy();

            var newAlertContent = new UNMutableNotificationContent
            {
                Body = "Body from Service",
                Title = "Title from Service",
                Sound = BestAttemptContent.Sound,
                Badge = 2
            };
            ContentHandler(newAlertContent);
        }

        public override void TimeWillExpire()
        {
        }
    }

У меня также есть идентификатор пакета расширения службы уведомлений (Мой идентификатор пакета приложения com.companyname.appname.test, а идентификатор пакета расширения com.companyname.appname.test.xxxxServiceExtension

ВКласс AppDelegate в методе Finishlaunching У меня также есть добавленный код разрешения.

  UNUserNotificationCenter.Current.RequestAuthorization(UNAuthorizationOptions.Alert, (approved, err) => {
            });

Есть ли что-нибудь еще, что мне нужно сделать?

Ответы [ 2 ]

0 голосов
/ 06 ноября 2019

Я видел нечто подобное, что некоторое время назад сводило меня с ума. Я не могу сказать, что то, что вы описываете, это то, что я испытывал, но я помню это исправление. Я не говорю на Xamarin.Forms, так что лучше всего я могу опубликовать код swift, но мне приходилось регистрироваться для уведомлений каждый раз, когда приложение запускалось

func application(_ application: UIApplication,
                   didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {

   // all your other config

   UIApplication.shared.registerForRemoteNotifications()
}
0 голосов
/ 02 ноября 2019

Система выполняет расширение приложения для уведомлений, только когда полезная нагрузка удаленного уведомления содержит следующую информацию:

Полезная нагрузка должна включать ключ изменяемого содержимого со значением 1.

полезная нагрузка должна включать словарь предупреждений с информацией о заголовке, подзаголовке или теле.

В листинге 2 показаны данные JSON для полезной нагрузки уведомления, содержащей зашифрованные данные. Флаг изменяемого содержимого устанавливается таким образом, чтобы устройство пользователя могло запускать соответствующее расширение приложения-службы, код которого показан в.

Листинг 2 Указание полезной нагрузки удаленного уведомления

{
   “aps” : {
      “category” : “SECRET”,
      “mutable-content” : 1,
      “alert” : {
         “title” : “Secret Message!”,
         “body”  : “(Encrypted)”
     },
   },
   “ENCRYPTED_DATA” : “Salted__·öîQÊ$UDì_¶Ù∞è   Ω^¬%gq∞NÿÒQùw”
}

Вы уверены, что указали ключ оповещения?

...