دليل التكامل الأساسي لـ 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__"});
Pushwoosh.register();حيث:
__YOUR_APP_ID__هو رمز التطبيق من لوحة تحكم 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. البناء المسبق للتطبيق
Anchor link toقم بإنشاء الكود الأصلي وتكوين التبعيات لكل منصة عن طريق تشغيل البناء المسبق:
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 registration error: Failed to retrieve token. Is firebase configured correctly?
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قد تواجه هذا الخطأ عند محاولة تشغيل التطبيق على جهاز.
لحل المشكلة، تأكد من أنك قد أكملت خطوة البناء المسبق. فهي تنشئ الكود الأصلي وتكوّن التبعيات لكل منصة.
npx expo prebuild