دليل التكامل الأساسي لـ 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.
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قم بإنشاء الكود الأصلي وتكوين التبعيات لكل منصة عن طريق تشغيل 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 target إلى مشروعك. هذا ضروري لتتبع التسليم الدقيق وميزات مثل Rich Media على iOS.
اتبع خطوات الدليل الأصلي لإضافة extension target وكود 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: لا يمكن قراءة الخاصية ‘init’ من null
Anchor link toقد تواجه هذا الخطأ عند محاولة تشغيل التطبيق على جهاز. لحل المشكلة، تأكد من إكمال خطوة prebuild. فهي تُنشئ الكود الأصلي وتُكوّن التبعيات لكل منصة.
npx expo prebuild