دليل التكامل الأساسي لـ Expo SDK
يحتوي هذا القسم على معلومات حول كيفية دمج Pushwoosh Expo SDK في تطبيقك.
المتطلبات الأساسية
Anchor link toلدمج Pushwoosh Expo SDK في تطبيقك، ستحتاج إلى ما يلي:
خطوات التكامل
Anchor link to1. تثبيت المكون الإضافي
Anchor link toقم بتثبيت المكون الإضافي Pushwoosh Expo باستخدام Expo CLI
expo install pushwoosh-expo-pluginقم بتثبيت Pushwoosh React Native SDK
npm install pushwoosh-react-native-plugin --save2. تعيين خصائص المكون الإضافي
Anchor link toأضف المكون الإضافي في بداية مصفوفة المكونات الإضافية مع الخصائص اللازمة:
{ "expo": { "plugins": [ [ "pushwoosh-expo-plugin", { "mode": "development", "ios": { "PW_API_TOKEN": "__YOUR_DEVICE_API_TOKEN__" }, "android": { "apiToken": "__YOUR_DEVICE_API_TOKEN__" } } ] ] }}حيث:
- يُستخدم
modeلتهيئة صلاحية بيئة APNs. القيم المتاحة هي “Development” أو “production”. PW_API_TOKEN،apiTokenهو Pushwoosh Device API Token الخاص بك.
3. تهيئة Pushwoosh
Anchor link toفي المكون الجذري لتطبيقك:
- استورد المكون الإضافي
pushwoosh-react-native-plugin. - قم بتهيئة Pushwoosh SDK.
- استدعِ
register()في منطق التهيئة الخاص بك للتسجيل في الإشعارات الفورية.
import Pushwoosh from 'pushwoosh-react-native-plugin';
Pushwoosh.init({ "pw_appid": "__YOUR_APP_ID__" , "project_number": "__YOUR_FCM_SENDER_ID__"});
Pushwoosh.register();حيث:
__YOUR_APP_ID__هو رمز التطبيق من لوحة تحكم Pushwoosh.__YOUR_FCM_SENDER_ID__هو رقم مشروع Firebase من Firebase Console.
4. الإعداد الأصلي لـ Android
Anchor link toأضف ملف تهيئة Firebase:
- انسخ ملف
google-services.jsonالخاص بك إلى الدليل الجذري للمشروع. - اضبط خاصية
googleServicesFileعلى مسار ملفgoogle-services.jsonالخاص بك وحدد خاصيةpackage:
"expo": { "name": "sample", "android": { "package": "com.pushwoosh.sample", "googleServicesFile": "./google-services.json" }, "plugins": [ [ "pushwoosh-expo-plugin", { "mode": "development", "ios": { "PW_API_TOKEN": "__YOUR_DEVICE_API_TOKEN__" }, "android": { "apiToken": "__YOUR_DEVICE_API_TOKEN__" } } ] ]}5. الإعداد الأصلي لـ iOS
Anchor link toاضبط خاصية bundleIdentifier على كائن ios:
"expo": { "name": "sample", "ios": { "bundleIdentifier": "com.pushwoosh.sample" }, "plugins": [ [ "pushwoosh-expo-plugin", { "mode": "development", "ios": { "PW_API_TOKEN": "__YOUR_DEVICE_API_TOKEN__" }, "android": { "apiToken": "__YOUR_DEVICE_API_TOKEN__" } } ] ]}6. بناء التطبيق المسبق (Prebuild)
Anchor link toأنشئ الكود الأصلي وقم بتهيئة التبعيات لكل منصة عن طريق تشغيل prebuild:
npx expo prebuild7. تشغيل المشروع
Anchor link to- قم ببناء وتشغيل المشروع:
npx expo run:androidnpx expo run:ios- اذهب إلى لوحة تحكم Pushwoosh و أرسل إشعارًا فوريًا.
- يجب أن ترى الإشعار في التطبيق.
التكامل الممتد
Anchor link toفي هذه المرحلة، تكون قد قمت بالفعل بدمج SDK ويمكنك إرسال واستقبال الإشعارات الفورية. الآن، دعنا نستكشف الوظائف الأساسية
مستمعو أحداث الإشعارات الفورية
Anchor link toفي Pushwoosh SDK يوجد مستمعان للأحداث، مصممان للتعامل مع الإشعارات الفورية:
- يتم تشغيل حدث
onPushReceivedعند استلام إشعار فوري - يتم تشغيل حدث
onPushAcceptedعندما يفتح المستخدم إشعارًا
يجب عليك إعداد مستمعي الأحداث هؤلاء مباشرة بعد تهيئة SDK عند بدء تشغيل التطبيق:
import { DeviceEventEmitter } from 'react-native';import Pushwoosh from 'pushwoosh-react-native-plugin';
class PushwooshNotificationHandler { setupPushListeners(): void {
DeviceEventEmitter.addListener("pushReceived", (e) => { console.warn("Push received: " + JSON.stringify(e)); });
DeviceEventEmitter.addListener("pushOpened", (e) => { console.warn("Push opened:" + JSON.stringify(e)); });
}}تكوين المستخدم
Anchor link toمن خلال التركيز على سلوك المستخدم وتفضيلاته الفردية، يمكنك تقديم محتوى مخصص، مما يؤدي إلى زيادة رضا المستخدم وولائه
import Pushwoosh from 'pushwoosh-react-native-plugin';
class Registration { afterUserLogin(user: User): void {
// Set user ID Pushwoosh.setUserId(user.getId());
// Set user email Pushwoosh.setEmails(user.getEmailList());
// Setting additional user information as tags for Pushwoosh Pushwoosh.setTags({ "age": user.getAge(), "name": user.getName(), "last_login": user.getLastLoginDate() }); }}العلامات (Tags)
Anchor link toالعلامات (Tags) هي أزواج من المفاتيح والقيم يتم تعيينها للمستخدمين أو الأجهزة، مما يسمح بالتقسيم بناءً على سمات مثل التفضيلات أو السلوك، مما يتيح إرسال رسائل مستهدفة.
import Pushwoosh from 'pushwoosh-react-native-plugin';
class UpdateUser { afterUserUpdateProfile(user: User): void {
// Set list of favorite categories Pushwoosh.setTags({ "favorite_categories": user.getFavoriteCategoriesList() });
// Set payment information Pushwoosh.setTags({ "is_subscribed": user.isSubscribed(), "payment_status": user.getPaymentStatus(), "billing_address": user.getBillingAddress() }); }}الأحداث (Events)
Anchor link toالأحداث (Events) هي إجراءات أو وقائع محددة للمستخدم داخل التطبيق يمكن تتبعها لتحليل السلوك وتشغيل الرسائل أو الإجراءات المقابلة
import Pushwoosh from 'pushwoosh-react-native-plugin';
class Registration {
// Track login event afterUserLogin(user: User): void { Pushwoosh.postEvent("login", { "name": user.getName(), "last_login": user.getLastLoginDate() }); }
// Track purchase event afterUserPurchase(product: Product): void { Pushwoosh.postEvent("purchase", { "product_id": product.getId(), "product_name": product.getName(), "price": product.getPrice(), "quantity": product.getQuantity() }); }}تتبع تسليم الرسائل لـ iOS
Anchor link toيجب عليك إضافة هدف Notification Service Extension إلى مشروعك. هذا ضروري لتتبع التسليم الدقيق وميزات مثل Rich Media على iOS.
اتبع خطوات الدليل الأصلي لإضافة هدف الامتداد وكود Pushwoosh اللازم بداخله.
خصائص المكون الإضافي الإضافية
Anchor link to| الخاصية | الافتراضي | الوصف |
|---|---|---|
| خصائص iOS | ||
Pushwoosh_LOG_LEVEL | INFO | مستوى السجل لـ iOS. القيم الممكنة: NONE, ERROR, WARN, INFO, DEBUG, NOISE |
| خصائص Android | ||
logLevel | INFO | مستوى السجل لـ Android. أحد القيم التالية: NONE, ERROR, WARN, INFO, DEBUG, NOISE |
multiNotificationMode | true | يمكن تغييره إلى false في حال كنت ترغب في عرض الإشعار الأخير فقط للمستخدم |
icon | - | مسار إلى أيقونة إشعار مخصصة لـ Android |
استكشاف الأخطاء وإصلاحها
Anchor link toإذا واجهت أي مشاكل أثناء عملية التكامل، يرجى الرجوع إلى قسم الدعم والمجتمع.
خطأ تسجيل FCM: فشل في استرداد الرمز المميز. هل تم تكوين firebase بشكل صحيح؟
Anchor link toتأكد من أن خاصية googleServicesFile الخاصة بـ Firebase قد تم إعدادها في ملف تكوين Expo وأن ملف google-services.json قد أضيف إلى الدليل الجذري لمشروعك:
"expo": { "name": "sample", "android": { "package": "com.pushwoosh.sample", "googleServicesFile": "./google-services.json" }, "plugins": [ [ "pushwoosh-expo-plugin", { "mode": "development", "ios": { "PW_API_TOKEN": "__YOUR_DEVICE_API_TOKEN__" }, "android": { "apiToken": "__YOUR_DEVICE_API_TOKEN__" } } ] ]}TypeError: Cannot read property ‘init’ of null
Anchor link toقد تواجه هذا الخطأ عند محاولة تشغيل التطبيق على جهاز.
لحل المشكلة، تأكد من أنك قد أكملت خطوة البناء المسبق (prebuild). فهي تنشئ الكود الأصلي وتهيئ التبعيات لكل منصة.
npx expo prebuild