انتقل إلى المحتوى

دليل التكامل الأساسي لـ Expo SDK

يحتوي هذا القسم على معلومات حول كيفية دمج Pushwoosh Expo SDK في تطبيقك.

المتطلبات المسبقة

Anchor link to

لدمج Pushwoosh Expo SDK في تطبيقك، ستحتاج إلى ما يلي:

خطوات التكامل

Anchor link to

1. تثبيت المكون الإضافي

Anchor link to

ثبّت مكون Pushwoosh Expo الإضافي باستخدام Expo CLI

Terminal window
expo install pushwoosh-expo-plugin

ثبّت Pushwoosh React Native SDK

Terminal window
npm install pushwoosh-react-native-plugin --save

2. تعيين خصائص المكون الإضافي

Anchor link to

أضف المكون الإضافي إلى مقدمة مصفوفة المكونات الإضافية بالخصائص الضرورية:

app.json/app.config.js
{
"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() في منطق التهيئة الخاص بك للتسجيل في إشعارات الدفع.
index.tsx
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:

  1. انسخ ملف google-services.json الخاص بك إلى الدليل الجذر للمشروع.
  2. اضبط خاصية googleServicesFile على مسار ملف google-services.json الخاص بك وحدد خاصية package:
app.json/app.config.js
"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:

app.json/app.config.js
"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:

Terminal window
npx expo prebuild

7. تشغيل المشروع

Anchor link to
  1. قم ببناء وتشغيل المشروع:
Terminal window
npx expo run:android
  1. انتقل إلى لوحة تحكم Pushwoosh وأرسل إشعار دفع.
  2. يجب أن ترى الإشعار في التطبيق.

التكامل الموسع

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_LEVELINFOمستوى السجل لنظام iOS. القيم المحتملة: NONE, ERROR, WARN, INFO, DEBUG, NOISE
خصائص Android
logLevelINFOمستوى السجل لنظام Android. أحد القيم التالية: NONE, ERROR, WARN, INFO, DEBUG, NOISE
multiNotificationModetrueيمكن تغييره إلى false في حال كنت ترغب في عرض آخر إشعار فقط للمستخدم
icon-مسار إلى أيقونة إشعار مخصصة لنظام Android

استكشاف الأخطاء وإصلاحها

Anchor link to

إذا واجهت أي مشاكل أثناء عملية التكامل، يرجى الرجوع إلى قسم الدعم والمجتمع.

خطأ في تسجيل FCM: فشل استرداد الرمز المميز. هل Firebase مهيأ بشكل صحيح؟
Anchor link to

تأكد من إعداد خاصية googleServicesFile الخاصة بـ Firebase في ملف تكوين Expo ومن إضافة ملف google-services.json إلى الدليل الجذر لمشروعك:

app.json/app.config.js
"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. فهي تُنشئ الكود الأصلي وتُكوّن التبعيات لكل منصة.

Terminal window
npx expo prebuild