React-native-onesignal: didReceiveRemoteNotification لا يعمل في AppDelegate.m

تم إنشاؤها على ٣٠ أكتوبر ٢٠١٨  ·  4تعليقات  ·  مصدر: OneSignal/react-native-onesignal

وصف:

أحاول استخدام Freschat SDK للتعامل مع الإشعارات الفورية داخل AppDelegate.m ولكن لا يبدو أنها تعمل مع امتداد خدمة الإشارة الواحدة.

بيئة

  1. ما هو إصدار OneSignal React-Native SDK الذي تستخدمه؟ 3.2.7
  2. كيف أضفت SDK إلى مشروعك (على سبيل المثال npm) npm

خطوات إعادة إنتاج المشكلة:

  • قم بتثبيت OneSignal SDK باستخدام npm في مشروعك

  • قم بتهيئة SDK في مندوب تطبيقات iOS
  • محاولة تلقي إشعار الدفع
  • أي شيء آخر:

    (تعطل stacktraces ، بالإضافة إلى أي معلومات أخرى هنا)

    التعليق الأكثر فائدة

    آسف على الرد المتأخر (للغاية) هنا ، ولكن هناك بعض الأشياء.

    بادئ ذي بدء ، تم إهمال application:didReceiveRemoteNotification: . ستحتاج إلى استخدام application:didReceiveRemoteNotification:fetchCompletionHandler: بدلاً من ذلك. لكنني أوصي بعدم استخدام هذا أيضًا ، يجب عليك بالتأكيد استخدام طرق UNUserNotificationCenterDelegate إذا كنت تريد تنفيذ التعليمات البرمجية الأصلية عند تلقي إشعار.

    لا يتجاوز ملحق خدمة الإعلام هذه الطريقة.

    لاستخدام UNUserNotificationCenterDelegate ، قم بتحرير AppDelegate.h وأضف:

    #import <UserNotifications/UserNotifications.h>
    

    ثم قم بتغيير واجهة AppDelegate لتنفيذ بروتوكول UNUserNotificationCenterDelegate :

    <strong i="18">@interface</strong> AppDelegate : UIResponder <UIApplicationDelegate, UNUserNotificationCenterDelegate>
    

    في AppDelegate.m داخل طريقة didFinishLaunchingWithOptions: ، يجب إضافة السطر التالي:

    UNUserNotificationCenter.currentNotificationCenter.delegate = self;
    

    أخيرًا ، يمكنك إضافة الطريقة التالية والتي سيتم استدعاؤها الآن عند تلقي إشعار:

    -(void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler {
      //do stuff
    }
    

    يتم الإغلاق نظرًا لأن هذه ليست مشكلة في SDK الخاص بنا

    ال 4 كومينتر

    @ nitish1099 ماذا تقصد بقولك "لا يبدو أنه يعمل مع امتداد خدمة OneSignal" ...؟

    أيضًا ، يعد Freschat's SDK مغلق المصدر ، لذا للأسف لا يوجد الكثير يمكننا القيام به فيما يتعلق بتصحيح عدم التوافق. عند إزالة SDK من مشروعك ، هل يتم استدعاء طريقة AppDelegate؟

    قد تحتاج إلى استخدام طرق UNUserNotificationCenterDelegate بدلاً من ذلك لتلقي استدعاءات طريقة حدث الإخطار

    @ Nightsd01 لست

    @ Nightsd01 أي تحديثات؟

    آسف على الرد المتأخر (للغاية) هنا ، ولكن هناك بعض الأشياء.

    بادئ ذي بدء ، تم إهمال application:didReceiveRemoteNotification: . ستحتاج إلى استخدام application:didReceiveRemoteNotification:fetchCompletionHandler: بدلاً من ذلك. لكنني أوصي بعدم استخدام هذا أيضًا ، يجب عليك بالتأكيد استخدام طرق UNUserNotificationCenterDelegate إذا كنت تريد تنفيذ التعليمات البرمجية الأصلية عند تلقي إشعار.

    لا يتجاوز ملحق خدمة الإعلام هذه الطريقة.

    لاستخدام UNUserNotificationCenterDelegate ، قم بتحرير AppDelegate.h وأضف:

    #import <UserNotifications/UserNotifications.h>
    

    ثم قم بتغيير واجهة AppDelegate لتنفيذ بروتوكول UNUserNotificationCenterDelegate :

    <strong i="18">@interface</strong> AppDelegate : UIResponder <UIApplicationDelegate, UNUserNotificationCenterDelegate>
    

    في AppDelegate.m داخل طريقة didFinishLaunchingWithOptions: ، يجب إضافة السطر التالي:

    UNUserNotificationCenter.currentNotificationCenter.delegate = self;
    

    أخيرًا ، يمكنك إضافة الطريقة التالية والتي سيتم استدعاؤها الآن عند تلقي إشعار:

    -(void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler {
      //do stuff
    }
    

    يتم الإغلاق نظرًا لأن هذه ليست مشكلة في SDK الخاص بنا

    هل كانت هذه الصفحة مفيدة؟
    0 / 5 - 0 التقييمات