وصف:
أحاول استخدام Freschat SDK للتعامل مع الإشعارات الفورية داخل AppDelegate.m ولكن لا يبدو أنها تعمل مع امتداد خدمة الإشارة الواحدة.
بيئة
خطوات إعادة إنتاج المشكلة:
قم بتثبيت OneSignal SDK باستخدام npm في مشروعك
أي شيء آخر:
(تعطل stacktraces ، بالإضافة إلى أي معلومات أخرى هنا)
@ 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 الخاص بنا
التعليق الأكثر فائدة
آسف على الرد المتأخر (للغاية) هنا ، ولكن هناك بعض الأشياء.
بادئ ذي بدء ، تم إهمال
application:didReceiveRemoteNotification:
. ستحتاج إلى استخدامapplication:didReceiveRemoteNotification:fetchCompletionHandler:
بدلاً من ذلك. لكنني أوصي بعدم استخدام هذا أيضًا ، يجب عليك بالتأكيد استخدام طرقUNUserNotificationCenterDelegate
إذا كنت تريد تنفيذ التعليمات البرمجية الأصلية عند تلقي إشعار.لا يتجاوز ملحق خدمة الإعلام هذه الطريقة.
لاستخدام
UNUserNotificationCenterDelegate
، قم بتحريرAppDelegate.h
وأضف:ثم قم بتغيير واجهة AppDelegate لتنفيذ بروتوكول
UNUserNotificationCenterDelegate
:في
AppDelegate.m
داخل طريقةdidFinishLaunchingWithOptions:
، يجب إضافة السطر التالي:أخيرًا ، يمكنك إضافة الطريقة التالية والتي سيتم استدعاؤها الآن عند تلقي إشعار:
يتم الإغلاق نظرًا لأن هذه ليست مشكلة في SDK الخاص بنا