دليل التكامل الأساسي لـ Expo SDK
يحتوي هذا القسم على معلومات حول كيفية دمج Pushwoosh Expo SDK في تطبيقك.
المتطلبات الأساسية
Anchor link toلدمج Pushwoosh Expo SDK في تطبيقك، ستحتاج إلى ما يلي:
خطوات التكامل
Anchor link to1. تثبيت الإضافة (plugin)
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أضف الإضافة في بداية مصفوفة الإضافات (plugin array) مع الخصائص اللازمة:
{ "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في المكون الجذري (root component) لتطبيقك:
- استورد إضافة
pushwoosh-react-native-plugin. - هيّئ Pushwoosh SDK.
- استدعِ
register()في منطق التهيئة الخاص بك للتسجيل في الإشعارات الفورية.
import Pushwoosh from 'pushwoosh-react-native-plugin';
Pushwoosh.init({ "pw_appid": "__YOUR_APP_ID__"});
Pushwoosh.register();حيث:
__YOUR_APP_ID__هو رمز التطبيق (application code) من لوحة تحكم Pushwoosh.
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، يوجد مستمعان للأحداث (event listeners)، مصممان للتعامل مع الإشعارات الفورية:
- يتم إطلاق حدث
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.
اتبع خطوات الدليل الأصلي لإضافة هدف الملحق (extension target) وكود Pushwoosh اللازم بداخله.
خصائص الإضافة الإضافية
Anchor link to| الخاصية | الافتراضي | الوصف |
|---|---|---|
| خصائص iOS | ||
Pushwoosh_LOG_LEVEL | INFO | مستوى السجل (Log level) لـ iOS. القيم الممكنة: NONE, ERROR, WARN, INFO, DEBUG, NOISE |
| خصائص Android | ||
logLevel | INFO | مستوى السجل (Log level) لـ 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