التتبع متعدد المنصات
توجد معظم المنتجات على أكثر من منصة واحدة: موقع ويب وتطبيق iOS وتطبيق Android. في Joryio تمثل ذلك عبر تطبيق واحد لكل منصة، وكلها تغذي مساحة العمل نفسها: تحصل كل منصة على مفتاح SDK وبيانات اعتماد Push خاصين بها، بينما تصل كل الأحداث إلى ملف مستخدم مشترك واحد.
تطبيق واحد لكل منصة
أنشئ تطبيقًا منفصلًا (من الإعدادات → التطبيقات) لكل منصة تنشر عليها. يمكنك إنشاء تطبيقات ويب وiOS وAndroid؛ أما تطبيقات متاجر التجارة الإلكترونية (Shopify وWooCommerce وMagento) فتُنشأ تلقائيًا عند ربط هذه التكاملات.
يحمل كل تطبيق مفتاح SDK خاصًا بالتنسيق jry_sdk_<platform>_<random>؛ والمنصة مضمّنة في المفتاح، لذلك يمكنك معرفة الإصدار الذي ينتمي إليه المفتاح من نظرة واحدة:
jry_sdk_web_4f2a9c... Website
jry_sdk_ios_b81d3e... iOS app
jry_sdk_android_77c0aa... Android app
للمفتاح ثلاث وظائف: يصادق طلبات SDK، ويوجه الأحداث إلى مساحة العمل الصحيحة، ويختم كل حدث بهوية التطبيق ($app_id و$app_name و$platform) لكي تتمكن من التقسيم والتحليل حسب المنصة.
تطبيقات React Native
لا توجد منصة مستقلة باسم «React Native». يربط React Native SDK حزم iOS وAndroid الأصلية، ولذلك يستخدم منتج React Native تطبيقين: واحدًا لـ iOS وآخر لـ Android ويمرر المفتاح المطابق وقت التشغيل:
import { Platform } from 'react-native';
import Joryio from '@joryio/react-native-sdk';
await Joryio.initialize(
Platform.OS === 'ios'
? 'jry_sdk_ios_YOUR_IOS_KEY'
: 'jry_sdk_android_YOUR_ANDROID_KEY',
'https://api-eu1.joryio.com',
);
يحافظ ذلك على صحة بيانات اعتماد Push لكل إصدار متجر (APNS لتطبيق iOS وFCM لتطبيق Android) وعلى دقة تحليلات المنصة.
ملف مستخدم واحد عبر المنصات
تفصل التطبيقات مصدر الأحداث؛ ولا تفصل هوية أصحابها. تشترك كل التطبيقات في مساحة العمل في قاعدة المستخدمين نفسها، وتُوحّد الملفات حسب معرّف المستخدم:
- استدعِ
identifyباستخدام معرّف المستخدم الثابت نفسه في كل منصة (يكون معرّف المستخدم في قاعدة بياناتك عادةً أفضل خيار، وليس Email الذي قد يتغير). - قبل تسجيل الدخول، يتتبع كل جهاز بمعرّف مجهول خاص به. عندما يتعرّف المستخدم، يُدمج سجل ذلك الجهاز المجهول في الملف المعرّف؛ لذلك ينتهي إسناد التسجيل من الويب وأحداث التشغيل الأول من الهاتف في مكان واحد.
- عرّف المستخدم بأسرع وقت ممكن في كل جلسة (عند تسجيل الدخول وعند بدء التطبيق إذا استعيدت الجلسة)، حتى يُسجل أقل عدد ممكن من الأحداث مجهولًا.
- Web (JS)
- iOS (Swift)
- Android (Kotlin)
const joryio = new JoryioSDK({ sdkKey: 'jry_sdk_web_...' });
joryio.identify('user_123');
// Same ID as on web
Joryio.shared.identify("user_123")
// Same ID as on web
Joryio.identify("user_123")
بعد التوحيد، يغذي الملف سلوكًا متعدد المنصات في كل مكان:
- يمكن أن تمتد الشرائح عبر المنصات («استخدم iOS ولم يستخدم الويب مطلقًا») لأن كل حدث يحمل
$platformو$app_id. - تعامل الرحلات المستخدم كشخص واحد: يمكن لحدث
Order Completedمن تطبيق iOS أن يحقق هدف رحلة دخلها المستخدم من الموقع. - تحسب السمات التي يديرها الخادم مثل
sessionCountالنشاط عبر جميع الأجهزة والمنصات.
تُكتب السمات التي تضبطها من أي منصة (setAttributes) في الملف نفسه؛ ويفوز آخر تعديل، لذلك حافظ على اتساق أسماء السمات وأنواعها عبر قواعد الشيفرة.
بيانات اعتماد Push لكل منصة
توجد بيانات اعتماد Push في التطبيق، ولذلك يهم تطبيق واحد لكل منصة:
- تطبيق iOS - ارفع مفتاح مصادقة APNS (.p8 مع Team ID وKey ID) أو شهادة (.p12) في إعداد Push للتطبيق.
- تطبيق Android - ارفع JSON حساب خدمة Firebase (FCM).
- تطبيق الويب - فعّل Web Push للتطبيق؛ تنشئ Joryio زوج مفاتيح VAPID وتعرض المفتاح العام لـ Web SDK.
اضبطها من الإعدادات → التطبيقات عبر إجراء ضبط Push في صف كل تطبيق. تُشفّر الأسرار أثناء التخزين وتظهر مخفية بعد الحفظ.
أي تطبيق يتلقى Push؟
يستهدف Push تطبيقًا واحدًا؛ إذ تحدد بيانات اعتماد تطبيق iOS أو Android واحد الأجهزة التي تتلقى الإشعار.
- تطبيق واحد، أو تطبيق واحد لكل منصة (مثل تطبيق iOS واحد + تطبيق Android واحد): يكون التطبيق الصحيح واضحًا، فتعالجه Joryio تلقائيًا. لن يظهر منتقي تطبيق.
- تطبيقان أو أكثر على المنصة نفسها (مثل إصدارَي iOS): يكون الاختيار ملتبسًا، فيظهر منتقي التطبيق المستهدف في منشئ الحملة وعقدة Push في الرحلة لاختيار التطبيق الذي يخرج منه Push. اتركه على تلقائي لاستخدام أول تطبيق متاح.