تساعد Ometria قسم التسويق لديك على فهم عملائك والتفاعل معهم بشكل أفضل من خلال تقديم رسائل بريد إلكتروني مخصصة وإشعارات فورية.
التطبيق له هدفين رئيسيين:
بالنسبة لتطبيق الهاتف المحمول الخاص بك، هذا يعني:
يجب على مطوري التطبيقات الذين يدمجون مع SDK هذا اتباع الدليل أدناه. يمكنك أيضًا الاطلاع على نموذج التطبيق الذي قمنا بتضمينه للتنفيذ المرجعي.
راجع إعداد تطبيق الهاتف المحمول الخاص بك باستخدام بيانات اعتماد Firebase في مركز مساعدة Ometria واتبع الخطوات هناك للحصول على مفتاح واجهة برمجة التطبيقات.
أسهل طريقة لإدخال Ometria في مشروع ReactNative الخاص بك هي باستخدام npm install
أو yarn add
.
react-native-ometria
باستخدام npm install react-native-ometria
أو yarn add react-native-ometria
ملاحظة: إذا كانت لديك مشكلات في تثبيت المكتبة، فيرجى مراعاة استبعاد المثال من تكوين الكتابة المطبوعة، على سبيل المثال:
{
...,
"exclude": ["example"]
}
بالنسبة iOS
تحتاج إلى تثبيت Pods pod install
لإنشاء مرآة مواصفات CocoaPods محلية.
إذا واجهت خطأ The Swift pod 'Ometria' depends upon 'FirebaseMessaging'
عند تشغيل تثبيت pod، فيرجى التفكير في إضافة use_frameworks! :linkage => :static
.
لتهيئة Ometria SDK، تحتاج إلى إدخال مفتاح API من 2. قبل أن تبدأ .
import Ometria from 'react-native-ometria' ;
await Ometria . initializeWithApiToken ( 'API_KEY' , {
notificationChannelName : 'Example Channel Name' , // optional, only for Android
appGroupIdentifier : 'group.com.ometria.sampleRN' , // optional, only for iOS
} ) ;
منذ الإصدار 2.3.0، يسمح SDK بإعادة تهيئة مثيل Ometria. لذا يمكنك استدعاء هذه الطريقة مرة أخرى لاحقًا في التطبيق إذا كنت بحاجة إلى ذلك.
يمكنك تحديد اسم مخصص لقناة إشعارات Android في معلمة الخيارات الاختيارية الثانية. اسم القناة الافتراضي هو <blank>
.
يمكنك أيضًا تحديد معرف مجموعة التطبيقات في معلمة الخيارات الاختيارية الثانية. راجع هذا القسم لنظام iOS.
يقوم Ometria بتسجيل أي أخطاء تمت مواجهتها أثناء وقت التشغيل بشكل افتراضي، ويمكن الوصول إلى هذه السجلات في وحدة التحكم الخاصة ببيئة التطوير الخاصة بك.
يمكنك تمكين التسجيل المتقدم إذا كنت تريد المزيد من المعلومات حول ما يحدث في الخلفية. فقط أضف السطر التالي بعد تهيئة المكتبة:
Ometria . isLoggingEnabled ( true ) ;
يجب أن تكون على دراية بسلوك المستخدمين على منصاتك حتى تتمكن من فهمهم. يمكن اكتشاف بعض السلوكيات تلقائيًا، بينما تحتاج الأحداث الأخرى إلى العمل من مطور التطبيق لتتبعها.
العديد من هذه الطرق لها أحداث مماثلة في متتبع موقعنا.
على سبيل المثال، يأخذ الحدث المحدد من قبل العميل معرف العميل أو البريد الإلكتروني - يجب أن تكون هذه المعرفات هي نفسها هنا كما هي في واجهة برمجة تطبيقات البيانات. إذا قمت بتحديد كل من البريد الإلكتروني ومعرف العميل، فيجب أن يتطابق كلاهما.
يتم دمج الأحداث من جانب Ometria في عرض واحد كبير عبر القنوات لسلوك عميلك. إذا كنت تستخدم بريدًا إلكترونيًا/معرفات العملاء غير متناسقة، فقد يؤدي ذلك إلى إنشاء ملفات تعريف مكررة أو فقدان البيانات.
بمجرد تهيئة SDK، يمكنك تتبع حدث ما عن طريق استدعاء الطريقة المخصصة له.
قام مستخدم التطبيق بالتعريف عن نفسه للتو، أي قام بتسجيل الدخول.
Ometria . trackProfileIdentifiedByCustomerIdEvent ( 'test_customer_id' ) ;
معرف العميل الخاص بهم هو معرف المستخدم الخاص بهم في قاعدة البيانات الخاصة بك.
في بعض الأحيان، يقدم المستخدم عنوان بريده الإلكتروني فقط دون تسجيل الدخول بالكامل أو الحصول على حساب. في هذه الحالة، يمكن لـ Ometria مطابقة الملف الشخصي بناءً على البريد الإلكتروني:
Ometria . trackProfileIdentifiedByEmailEvent ( '[email protected]' ) ;
وجود معرف العميل يجعل مطابقة الملف الشخصي أكثر قوة.
إنه لا يتعارض مع إرسال حدث عبر البريد الإلكتروني؛ لتحقيق التكامل الأمثل، يجب عليك إرسال أي من الحدثين بمجرد حصولك على المعلومات. يعد هذان الحدثان محوريين لعمل SDK، لذا تأكد من إرسالهما في أقرب وقت ممكن. نكرر هنا أن هذه المعرفات يجب أن تكون هي نفسها هنا مثل تلك التي تستخدمها في منصة التجارة الإلكترونية الخاصة بك والتي ترسلها إلى Ometria (عبر واجهة برمجة تطبيقات البيانات أو طرق أخرى). إذا قمت بتحديد كل من البريد الإلكتروني ومعرف العميل، فيجب أن يتطابق كلاهما. الخطأ النموذجي الذي نراه في عمليات التكامل هو أن التطبيق ينشئ معرف عميل جديد عند كل تسجيل دخول (لا يتطابق مع معرف العميل المخزن في Ometria). لتجنب ذلك، قم بإنشاء هذه المعرفات مركزيًا على خوادمك وأرسل معرفات متسقة من خلال Ometria mobile SDK وOmetria Data API. إذا كان من غير العملي إنشاء معرفات متسقة، فإننا نقترح استخدام البريد الإلكتروني فقط لتحديد جهات الاتصال.
التراجع عن حدث تم تحديده في ملف التعريف. يمكنك استخدام هذا إذا قام المستخدم بتسجيل الخروج.
Ometria . trackProfileDeidentifiedEvent ( ) ;
يقوم هذا الحدث حاليًا بمسح المعرفات المخزنة (البريد الإلكتروني و/أو معرف العميل) من وحدة التخزين المحلية للهاتف. ليس له أي تأثير آخر داخل أوميتريا.
يقوم الزائر بالنقر/النقر/المشاهدة/الإبراز أو إظهار الاهتمام بمنتج ما.
على سبيل المثال، يبحث الزائر عن مصطلح ويختار إحدى معاينات المنتج من بين مجموعة من النتائج، أو يتصفح فئة من الملابس، وينقر على قميص معين لرؤية صورة أكبر.
يدور هذا الحدث حول جذب اهتمام الزائر بهذا المنتج.
Ometria . trackProductViewedEvent ( 'product_id' ) ;
لقد شاهد الزائر صفحة أو شاشة أو نموذجًا مخصصًا بمحتويات سلة التسوق:
Ometria . trackBasketViewedEvent ( ) ;
قام الزائر بتغيير سلة التسوق الخاصة به:
const items : OmetriaBasketItem [ ] = [
{
productId : 'product-1' ,
sku : 'sku-product-1' ,
quantity : 1 ,
price : 12.0 ,
variantId : 'variant-1' ,
} ,
{
productId : 'product-2' ,
sku : 'sku-product-2' ,
quantity : 2 ,
price : 9.0 ,
variantId : 'variant-2' ,
} ,
{
productId : 'product-3' ,
sku : 'sku-product-3' ,
quantity : 3 ,
price : 20.0 ,
variantId : 'variant-3' ,
} ,
] ;
Ometria . trackBasketUpdatedEvent ( {
totalPrice : 12.0 ,
id : 'basket_id_eg' ,
currency : 'USD' ,
items ,
link : 'link_eg' ,
} ) ;
يأخذ هذا الحدث السلة الحالية الكاملة كمعلمة - وليس فقط الأجزاء المحدثة.
يساعد هذا في التعافي من أحداث السلة المفقودة أو غير المتزامنة: التحديث الأخير يكون دائمًا موثوقًا.
OmetriaBasketItem هو كائن يصف محتويات عنصر سلة التسوق. يمكن أن يكون لها سعر وكمية خاصة بها بناءً على القواعد والعروض الترويجية المختلفة التي يتم تطبيقها. لديها الخصائص التالية:
- معرف المنتج : (
String
، مطلوب) - سلسلة تمثل المعرف الفريد لهذا المنتج.- sku : (
String
، اختيارية) - سلسلة تمثل وحدة حفظ المخزون، مما يسمح بتحديد صنف معين.- الكمية : (
Int
, مطلوب) - عدد العناصر التي يمثلها هذا الإدخال.- السعر : (
Float
، مطلوب) - القيمة العائمة التي تمثل سعر عنصر واحد. يتم إنشاء العملة بواسطة OmetriaBasket التي تحتوي على هذا العنصر- variandId : (
String
، اختيارية) - معرف لمنتج مختلف مرتبط بهذا العنصر.
OmetriaBasket هو كائن يصف محتويات سلة التسوق ويتمتع بالخصائص التالية:
- المعرف : (
String
، اختياري) - معرف فريد لهذه السلة- العملة : (
String
، مطلوبة) - سلسلة تمثل العملة في رمز العملة المكون من ثلاثة أحرف وفقًا لمعيار ISO 4217، على سبيل المثال"USD"
و"GBP"
- TotalPrice : (
float
، مطلوب) - قيمة عائمة تمثل التسعير.- العناصر : (
Array[OmetriaBasketItem]
) - مصفوفة تحتوي على إدخالات العناصر في هذه السلة.- الرابط : (
String
) - رابط عميق إلى الويب أو الصفحة داخل التطبيق لهذه السلة. يمكن استخدامه في إشعار يتم إرساله إلى المستخدم، على سبيل المثال "هل نسيت إتمام عملية الدفع؟ إليك سلتك للمتابعة: 'https://eg.com/basket_url'". باتباع هذا الرابط يجب أن يأخذهم مباشرة إلى صفحة السلة.
تتبع متى بدأ المستخدم عملية الخروج. يُستخدم هذا حاليًا فقط لحساب مشاهدات الصفحة، وليس له أي تأثير آخر في Ometria.
Ometria . trackCheckoutStartedEvent ( 'order_id' ) ;
تم إكمال الطلب ودفع ثمنه:
const items : OmetriaBasketItem [ ] = [
{
productId : 'product-1' ,
sku : 'sku-product-1' ,
quantity : 1 ,
price : 12.0 ,
} ,
] ;
Ometria . trackOrderCompletedEvent ( 'order_id' , {
totalPrice : 12.0 ,
id : 'basket_id_eg' ,
currency : 'USD' ,
items ,
link : 'link_eg' ,
} ) ;
استخدم دليل التعامل مع التفاعل مع الإشعارات التي تحتوي على عناوين URL لتتبع هذا الحدث يدويًا عندما يكون لديك معلومات كافية بخصوص الشاشة (أو الوجهة الأخرى) التي سيفتحها التطبيق.
Ometria . trackDeepLinkOpenedEvent ( '/profile' , 'ProfileScreen' ) ;
يقوم الزائر بعرض "الصفحة الرئيسية" أو الشاشة المقصودة لتطبيقك.
Ometria . trackHomeScreenViewedEvent ( ) ;
يقوم الزائر بالنقر/النقر/المشاهدات/الإبرازات أو إظهار الاهتمام بقائمة المنتجات. يتضمن هذا النوع من الشاشات نتائج البحث أو قوائم المنتجات في مجموعة أو فئة أو مجموعة أو أي شاشة أخرى تعرض قائمة المنتجات.
على سبيل المثال، متجر يبيع الملابس، ويقوم الزائر بالنقر على "أحذية نسائية" لرؤية قائمة المنتجات في تلك الفئة، أو يبحثون عن "بلوزة زرقاء" ويشاهدون قائمة المنتجات في تلك الفئة.
يجب أن يتم تشغيل هذا الحدث على:
Ometria . trackProductListingViewedEvent ( ) ;
يساعدنا تتبع مشاهدات الشاشة المستقلة للزائر في تتبع تفاعلهم مع التطبيق، بالإضافة إلى مكان وجودهم في الرحلة.
سيكون الحدث المماثل على موقع الويب هو تتبع مشاهدات الصفحة المستقلة.
تحتوي جميع شاشات التجارة الإلكترونية الشائعة على حدث خاص بها على المستوى الأعلى: عرض السلة، وقائمة المنتجات التي تم عرضها، وما إلى ذلك.
قد يحتوي تطبيقك على نوع محدد من الصفحات يكون مفيدًا للمسوقين لتتبع التفاعل معه.
على سبيل المثال، إذا كنت تقوم بتشغيل عرض ترويجي، ويشير عرض شاشة معينة إلى الاهتمام بالعرض الترويجي، وقد يرغب التسويق في متابعته لاحقًا.
لتتبع هذه الشاشات المخصصة، استخدم حدث الشاشة المعروضة :
Ometria . trackScreenViewedEvent ( 'OnboardingScreen' , { a : '1' , b : '2' } ) ;
قد يحتوي تطبيقك على تدفقات أو صفحات محددة تهم فريق التسويق.
على سبيل المثال، قد يرغب قسم التسويق في إرسال بريد إلكتروني أو إشعار إلى أي مستخدم قام بالتسجيل في عرض ترويجي معين، أو تفاعل مع زر أو عنصر معين في التطبيق.
إذا أرسلت حدثًا مخصصًا يتوافق مع هذا الإجراء، فسيتمكنون من تشغيل حملة تلقائية عليه.
تحقق مع فريق التسويق حول التفاصيل وما قد يحتاجون إليه. خاصة إذا كانوا يستخدمون Ometria بالفعل للبريد الإلكتروني، فسيعرفون عن حملات التشغيل الآلي والأحداث المخصصة.
Ometria . trackCustomEvent ( 'my_custom_type' , { } ) ;
يتم تتبع الأحداث التالية تلقائيًا بواسطة SDK.
تعد تهيئة SDK كافية للاستفادة من هذه الميزات؛ ليس هناك حاجة لمزيد من التكامل (ما لم يذكر خلاف ذلك).
حدث | وصف |
---|---|
تم تثبيت التطبيق | تم تثبيت التطبيق للتو. عادةً لا يمكن إرسالها عند تثبيت التطبيق فعليًا ، ولكن بدلاً من ذلك يتم إرسالها فقط عند تشغيل التطبيق لأول مرة. |
تم إطلاق التطبيق | لقد أطلق شخص ما التطبيق للتو. |
التطبيق في المقدمة | تم إطلاق التطبيق بالفعل، ولكنه كان في الخلفية. لقد تم جلبه للتو إلى المقدمة. |
خلفية التطبيق | كان التطبيق قيد الاستخدام النشط وتم إرساله للتو إلى الخلفية. |
تم استلام الإشعار في حالة إنهاء التطبيق | تلقى النظام إشعارًا فوريًا بينما كان التطبيق في حالة الخروج. (يحتاج إلى ملحق خدمة الإشعارات على نظام iOS) |
حدث خطأ | حدث خطأ من جانب العميل. نحن نحاول اكتشاف أي مشكلات تتعلق بحمولة الإشعارات الفعلية من جانبنا، لذلك لا نتوقع أي أخطاء تحتاج إلى إرجاعها إلى المستخدمين النهائيين. |
من أجل تقليل استهلاك الطاقة وعرض النطاق الترددي، لا تقوم مكتبة Ometria بإرسال الأحداث واحدًا تلو الآخر إلا إذا طلبت منها ذلك.
بدلاً من ذلك، يقوم بتكوين دفعات من الأحداث التي يتم إرسالها إلى الواجهة الخلفية أثناء وقت تشغيل التطبيق عند حدوث أي مما يلي:
pushtokenRefreshed
)notificationReceived
appForegrounded
appBackgrounded
يمكنك أن تطلب من المكتبة إرسال جميع الأحداث المتبقية إلى الواجهة الخلفية وقتما تشاء عن طريق الاتصال:
Ometria . flush ( ) ;
يمكنك مسح كافة الأحداث التي تم تتبعها ولم يتم مسحها بعد.
للقيام بذلك، اتصل بالطريقة التالية:
Ometria . clear ( ) ;
لمعرفة الأحداث التي تم التقاطها، يمكنك التحقق من السجلات الواردة من Ometria SDK، إذا تم تمكين التسجيل. يمكنك تصفية كلمة "Ometria". تسجل SDK جميع الأحداث فور حدوثها، كما تسجل أيضًا عملية الحذف، أي عند إرسالها إلى واجهة برمجة التطبيقات لأحداث الهاتف المحمول Ometria. ستكون أي أخطاء محتملة في الإرسال (مشكلات واجهة برمجة التطبيقات أو مشكلات التحقق من صحة الحدث) مرئية هنا أيضًا.
يستخدم Ometria Firebase Cloud Messaging لإرسال إشعارات الدفع إلى الأجهزة المحمولة.
لذلك سيتعين عليك إضافة "React-Native Firebase" باعتباره تابعًا لـ Ometria، باستخدام الأسطر التالية:
import firebase from '@react-native-firebase/app' ;
import messaging from '@react-native-firebase/messaging' ;
بالنسبة لنظام التشغيل Android، اتبع البرنامج التعليمي Firebase ReactNative، Firebase لنظام Android بالنسبة لنظام iOS، اتبع البرنامج التعليمي Firebase ReactNative، Firebase لنظام iOS
لاستخدام الإشعارات الفورية، تحتاج أيضًا إلى اتباع الخطوات الواردة في دليل ReactNative للإشعارات الفورية
عند الإعداد بشكل صحيح، يمكن لـ Ometria إرسال إشعارات مخصصة لتطبيق الهاتف المحمول الخاص بك.
اتبع الخطوات التالية:
قبل المتابعة، يجب أن تكون قد قمت بالفعل بتكوين:
اقرأ المزيد حول هذه الخطوات في القسم 4. قم بتهيئة المكتبة
بالنسبة لنظام التشغيل Android 13 (مستوى واجهة برمجة التطبيقات 33) والإصدارات الأحدث، يتعين عليك أولاً الإعلان عن الإذن في ملف AndroidManifest.xml:
< manifest ...>
< uses-permission android : name = " android.permission.POST_NOTIFICATIONS " />
< application ...>
...
</ application >
</ manifest >
يجب عليك طلب أذونات للإخطارات. يمكنك استخدام أذونات التفاعل الأصلي.
import { requestNotifications , RESULTS } from 'react-native-permissions' ;
...
await requestNotifications ( [ 'alert' , 'sound' , 'badge' ] ) . then ( ( { status } ) => {
if ( status === RESULTS . GRANTED ) {
console . log ( '? Push Notification permissions granted!' ) ;
}
} ) ;
تعرف على المزيد حول أذونات وقت تشغيل الإشعارات على Android هنا.
بعد تهيئة Ometria، يجب عليك إعادة توجيه رمز Firebase Push Notification (لكل من iOS وAndroid).
يتعين عليك أيضًا إعادة توجيه رمز إشعار الدفع إلى Ometria في كل مرة يتم تحديثه.
import Ometria from 'react-native-ometria' ;
import messaging from '@react-native-firebase/messaging' ;
await Ometria . initializeWithApiToken ( 'API_KEY' , {
notificationChannelname : 'Example Channel Name' , // optional, only for Android
appGroupIdentifier : 'group.com.ometria.sampleRN' , // optional, only for iOS
} ) ;
messaging ( )
. getToken ( )
. then ( ( pushToken ) => Ometria . onNewToken ( pushToken ) ) ;
messaging ( ) . onTokenRefresh ( ( pushToken ) => Ometria . onNewToken ( pushToken ) ) ;
اشترك في الرسائل البعيدة التي يتلقاها تطبيقك أثناء وجوده في حالة التطبيق الأمامي. يمكنك القيام بذلك عن طريق استخدام التابع onMessage
من الحزمة @react-native-firebase/messaging
.
في رد الاتصال، يمكنك استخدام Ometria.onNotificationReceived
للسماح لـ Ometria SDK بمعرفة أنه قد تم استلام رسالة عن بعد وسيتم تشغيل الحدث notificationReceived
. استخدم Ometria.parseNotification
إذا كنت تريد استخراج بيانات Ometria من الرسالة البعيدة.
messaging ( ) . onMessage ( async ( remoteMessage ) => {
Ometria . onNotificationReceived ( remoteMessage ) ;
const ometriaData = Ometria . parseNotification ( remoteMessage ) ;
// Use ometriaData
} ) ;
إذا قمت بتنفيذ مثل هذا الحل المخصص، فلا تنس الاتصال Ometria.onNotificationOpenedApp
للسماح لـ SDK بالتفاعل مع الإشعار عند التعامل مع حدث تفاعل الإشعارات للإشعارات الأمامية.
لكي يتمكن Ometria من تتبع جميع الإشعارات التي تم تلقيها بدقة في حالة الخروج والخلفية للتطبيق على نظام التشغيل iOS، فإنه يحتاج إلى الاستفادة من قوة خدمة الخلفية، التي يمكنها الوصول إلى جميع الإشعارات.
للحصول على دليل كامل حول كيفية إعداد ملحق خدمة الإشعارات، راجع إضافة هدف ملحق خدمة الإشعارات.
لكي يتمكن Ometria من تتبع جميع الإشعارات التي تم تلقيها بدقة في حالة الخروج والخلفية للتطبيق على Android، يتعين عليك الاشتراك مبكرًا (في index.js
) للرسائل عن بعد التي يتلقاها تطبيقك أثناء وجوده في حالة الخروج والخلفية.
سيسمح Ometria.onAndroidBackgroundMessage
لـ Ometria SDK بمعرفة أنه قد تم استلام رسالة عن بعد وسيتم إطلاق حدث notificationReceived . فهو يحتاج إلى رمز Ometria المميز لتهيئة SDK في الخلفية.
Platform . OS === 'android' &&
messaging ( ) . setBackgroundMessageHandler ( async ( remoteMessage ) => {
Ometria . onAndroidBackgroundMessage ( {
ometriaToken : 'OMETRIA_KEY'
ometriaOptions : { } ,
remoteMessage ,
} ) ;
} ) ;
اعتبارًا من الإصدار 2.4.0، تعد Ometria.setBackgroundMessageHandler
طريقة مهملة. استخدم Ometria.onAndroidBackgroundMessage
بدلاً من ذلك.
عندما يتفاعل مستخدم مع إشعار في الخلفية أو حالة الخروج، يجب عليك السماح لـ Ometria SDK بمعرفة أنه تم التفاعل مع الإشعار وتم فتح التطبيق. يمكنك القيام بذلك عن طريق استدعاء Ometria.onNotificationOpenedApp
باستخدام الرسالة البعيدة كمعلمة.
// Check if the app was opened from quit state by a notification
messaging ( )
. getInitialNotification ( )
. then ( ( remoteMessage ) => {
if ( remoteMessage ) {
Ometria . onNotificationOpenedApp ( remoteMessage ) ;
}
} ) ;
// Subscribe to the app being opened from background state by a notification
messaging ( ) . onNotificationOpenedApp ( ( remoteMessage ) =>
Ometria . onNotificationOpenedApp ( remoteMessage )
) ;
اعتبارًا من الإصدار 2.4.0، تعد Ometria.onNotificationInteracted
طريقة مهملة. استخدم Ometria.onNotificationOpenedApp
بدلاً من ذلك.
يسمح لك Ometria بإرسال عناوين URL ومعلومات التتبع إلى جانب إشعارات الدفع الخاصة بك ويسمح لك بالتعامل معها على الجهاز. عند فتح إشعار للتطبيق، يمكنك تحليل رسالة الإشعار عن بعد والتحقق مما إذا كانت تحتوي على عنوان URL لرابط عميق.
const notif = await Ometria . parseNotification ( remoteMessage ) ;
if ( notif ?. deepLinkActionUrl ) {
Ometria . trackDeepLinkOpenedEvent ( notif . deepLinkActionUrl , 'Browser' ) ;
Linking . openURL ( notif . deepLinkActionUrl ) ;
}
يقوم Ometria.parseNotification
بإرجاع كائن بنوع OmetriaNotificationData
الذي يبدو كما يلي:
type OmetriaNotificationData = {
campaignType?: 'trigger; // represents automation campaigns
deepLinkActionUrl?: string;
externalCustomerId?: string;
imageUrl?: string;
sendId?: string;
tracking: { // Can be overridden / added in your automation campaign's settings
utm_medium?: string; // default is "push"
utm_source: string;
utm_campaign: string; // generated from campaign hash and title
om_campagin: string; // generated from campaign hash, campaign version and node id
[key: string]: string | undefined; // additional tracking data you add
};
};
ملحق خدمة الإشعارات له غرضان:
لإضافة الامتداد، انتقل إلى ملف > جديد > الهدف ، وحدد ملحق خدمة الإشعارات > التالي .
يتم عرض عنصر جديد في قائمة الأهداف الخاصة بك:
بعد ذلك، تأكد من أن Ometria SDK متاح أيضًا لهذا الهدف الجديد عن طريق تحديث ملف podfile الخاص بك ليشمل هدفك المضاف حديثًا وتحديد Ometria باعتباره تبعية.
# move this line before the App target
pod 'GoogleUtilities' , : modular_headers => true
use_frameworks! :linkage => :static
target 'sampleApp' do
# Pods for sampleApp
end
# Add the following lines
target 'NotificationService' do
use_frameworks! :linkage => :static
pod 'Ometria'
end
في هذه المرحلة، يعمل التطبيق الرئيسي والامتداد ككيانين منفصلين، والمكون المشترك الوحيد هو الكود. لكي يتمكن الملحق من الحصول على حق الوصول للقراءة والكتابة إلى البيانات ذات الصلة بـ SDK، فإنه يتطلب أن يكون في نفس مجموعة التطبيقات مثل الهدف الرئيسي. سيسمح هذا للهدف الرئيسي والامتداد بمشاركة البيانات.
في متصفح مشروعك، حدد مشروعك، ثم انتقل إلى Signing & Capabilities وحدد + Capability في الزاوية العلوية اليسرى.
بمجرد الانتهاء من ذلك، سيتم عرض قسم جديد أسفل التوقيع. سيسمح لك بإضافة مجموعة تطبيقات جديدة. تأكد من تحديد المعرف ذي الصلة (مثل group.[BUNDLE_IDENTIFIER]
)، والاحتفاظ بالقيمة، حيث ستحتاج إليها عند إنشاء مثيل Ometria. كرر العملية لهدف ملحق خدمة الإشعارات، ويجب أن تكون جاهزًا للبدء.
للسماح لـ Ometria باعتراض الإشعارات، افتح فئة NotificationService
التي تم إنشاؤها تلقائيًا بجانب الامتداد، واستبدل المحتوى بما يلي:
import UserNotifications
import Ometria
class NotificationService : OmetriaNotificationServiceExtension {
override func instantiateOmetria ( ) -> Ometria ? {
Ometria . initializeForExtension ( appGroupIdentifier : " group.[BUNDLE_IDENTIFIER] " )
}
}
وأخيرًا، يتعين عليك استخدام معرف مجموعة التطبيقات عند تهيئة Ometria في تطبيق ReactNative.
import Ometria from 'react-native-ometria' ;
// Ometria init
await Ometria . initializeWithApiToken ( 'API_KEY' , {
notificationChannelName : 'Example Channel Name' , // optional, only for Android
appGroupIdentifier : 'group.[BUNDLE_IDENTIFIER]' , // optional, only for iOS
} ) ;
سيُصدر تطبيقك الآن إشعارًا notificationReceived
في كل مرة يتم فيها تلقي إشعار في حالة الإنهاء وستتمكن من عرض إشعارات المحتوى الغني على نظام التشغيل iOS.
للحصول على مثال كامل وحالة الاستخدام، يرجى الرجوع إلى نموذج التطبيق.
ترسل Ometria رسائل بريد إلكتروني مخصصة تحتوي على عناوين URL تشير إلى موقع الويب الخاص بك. لفتح عناوين URL هذه داخل تطبيقك، تأكد من اتباع هذا الدليل.
أولاً، تأكد من إعداد نطاق تتبع Ometria الذي يدعم SSL لحسابك. قد يكون لديك هذا بالفعل لحملات البريد الإلكتروني الخاصة بك، ولكن إذا لم يكن الأمر كذلك، فاطلب من جهة اتصال Ometria الخاصة بك إعداد واحدة، وينبغي عليهم تزويدك بالمجال.
يرجى اتباع وثائق ios للنطاقات المرتبطة، ثم قم بإنشاء ملف apple-app-site-association وإرساله إلى جهة اتصال Ometria الخاصة بك.
الخطوة الأخيرة هي معالجة عناوين URL في تطبيقك ونقل المستخدم إلى الأقسام المناسبة من التطبيق. لاحظ أنك بحاجة إلى تنفيذ التعيين بين عناوين URL لموقع الويب الخاص بك وشاشات تطبيقك.
انظر أيضًا ربط الإشعارات الفورية بشاشات التطبيقات.
إذا كنت تتعامل مع عناوين URL عادية تشير إلى موقع الويب الخاص بك، فيمكنك تحليلها إلى مكونات ومعلمات مسار مختلفة. سيسمح لك هذا بالحصول على المعلومات المطلوبة للانتقال إلى الشاشة الصحيحة في تطبيقك.
لكي يتعرف ReactNative على أن عنوان url يفتح التطبيق، تحتاج إلى ضبط ملف AppDelegate.m من مجلد ios، أضف الكود التالي إلى AppDelegate.m من ./ios/ProjectName
- ( BOOL )application:(UIApplication *)application openURL:( NSURL *)url
sourceApplication:( NSString *)sourceApplication annotation:( id )annotation
{
return [RCTLinkingManager application: application openURL: url
sourceApplication: sourceApplication annotation: annotation];
}
// Only if your app is using [Universal Links](https://developer.apple.com/library/prerelease/ios/documentation/General/Conceptual/AppSearch/UniversalLinks.html).
- ( BOOL )application:(UIApplication *)application continueUserActivity:( NSUserActivity *)userActivity
restorationHandler:( void (^)( NSArray * _Nullable))restorationHandler
{
return [RCTLinkingManager application: application
continueUserActivity: userActivity
restorationHandler: restorationHandler];
}
بالنسبة للأندرويد يرجى إضافة ما يلي:
< intent-filter android : autoVerify = " true " >
< action android : name = " android.intent.action.VIEW " />
< category android : name = " android.intent.category.DEFAULT " />
< category android : name = " android.intent.category.BROWSABLE " />
< data
android : host = " clickom.omdemo.net "
android : scheme = " https " />
</ intent-filter >
إلى /android/app/src/main/AndroidManifest.xml
ومع ذلك، تحتوي رسائل البريد الإلكتروني الخاصة بـ Ometria على عناوين URL غامضة للتتبع، ويجب تحويلها مرة أخرى إلى عنوان URL الأصلي، للإشارة إلى موقع الويب الخاص بك، قبل