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

الانتقال من OneSignal

الانتقال من OneSignal في معظمه تغيير أسماء. خادمك يرسل الطلب نفسه إلى رابط جديد، واستدعاءات Flutter والويب تحتفظ بأسمائها تحت Takeed، ومشتركينك على أندرويد وiOS ينتقلون معك. لن يحتاج تطبيقك بعد الآن إلى google-services.json، وتحصل على رموز التحقق عبر الواتساب في الحساب نفسه.

في هذه الصفحة
ماذا التفاصيل
يبقى كما هو حقول الواجهة البرمجية وأسماء الشرائح؛ أسماء استدعاءات Flutter v5 وWeb v16؛ معرّفات مستخدميك الخارجية (login) ووسومهم
يتغيّر الرابط والمفتاح؛ OneSignal يصبح Takeed؛ حساب خدمة Firebase يُرفع في لوحة التحكم بدل وضع google-services.json في التطبيق
تكسب إشعارات مجانية وبلا حدود؛ رموز OTP عبر الواتساب في الحساب نفسه؛ فروع لكل منها مفاتيحها وحدودها
غير متاح OneSignal.Debug وLocation وInAppMessages وLiveActivities؛ إرسال البريد الإلكتروني أو الرسائل النصية

التعديل في الكود صغير، والجزء البطيء هو نشر التطبيق في المتاجر، لذا خطّط للانتقال مع إصدارك القادم. خمس خطوات:

  1. أنشئ التطبيق وأضف مفاتيحك.
  2. وجّه خادمك إلى تأكيد.
  3. بدّل الحزمة في التطبيق.
  4. استورد مشتركيك.
  5. أكمل الانتقال.

1أنشئ التطبيق وأضف مفاتيحك#

أنشئ حسابًا وشركة وتطبيقًا. افتح الإعدادات ← إعدادات الإشعارات ← مفاتيح Firebase وApple ثم اختر إضافة مفتاح:

  • أندرويد: ملف JSON لحساب خدمة Firebase (من Firebase console: إعدادات المشروع، ثم Service accounts، ثم Generate new private key). يقرأ تأكيد تطبيقات أندرويد في المشروع من Firebase مباشرة، ولا تضع شيئًا داخل تطبيقك.
  • iOS: مفتاح APNs بصيغة .p8 مع Key ID وTeam ID وBundle ID الخاص بالتطبيق.

انتبه

استخدم مشروع Firebase نفسه وفريق Apple نفسه اللذين يستخدمهما OneSignal. المشتركين الذين ستستوردهم في الخطوة 4 مرتبطين بهما، ولا يمكن الوصول إليهم من مشروع آخر.

التفاصيل في البدء السريع: Flutter.

2وجّه خادمك إلى تأكيد#

غيّر الرابط والمفتاح والـ App ID، ويبقى محتوى الطلب كما هو:

− قبل+ بعد
curl https://api.onesignal.com/notifications \  -H "Authorization: Key $ONESIGNAL_REST_KEY" \curl https://takeed-iq.com/api/v1/notifications \  -H "Authorization: Key $TAKEED_KEY" \  -H "Content-Type: application/json" \  -d '{"app_id": "ONESIGNAL-APP-ID",  -d '{"app_id": "TAKEED-APP-ID",       "included_segments": ["All"],       "headings": {"en": "Hello"}, "contents": {"en": "It works"}}'
OneSignal تأكيد
https://api.onesignal.com/notifications (القديم: https://onesignal.com/api/v1/notifications) https://takeed-iq.com/api/v1/notifications
Authorization: Key <REST API key> (المفاتيح القديمة: Basic <key>) Authorization: Key <Takeed key>، ويعمل Basic وBearer أيضًا
app_id الـ App ID في تأكيد (أو target مع معرّفاتك)
تطبيق OneSignal لكل نطاق فرعي لشركة تطبيق واحد: target: "app:company"، أو مفتاح فرع

راجع الحقول التي يرسلها خادمك مع قائمة الحقول المدعومة.

3بدّل الحزمة في التطبيق#

Flutter#

من onesignal_flutter v5 إلى takeed_flutter 2.1.2 أو أحدث:

− قبل+ بعد
dependencies:  onesignal_flutter: ^5.2.0  takeed_flutter: ^2.1.2
− قبل+ بعد
import 'package:onesignal_flutter/onesignal_flutter.dart';import 'package:takeed_flutter/takeed_flutter.dart';OneSignal.initialize('ONESIGNAL-APP-ID');await Takeed.initialize('TAKEED-APP-ID');OneSignal.login(user.id);await Takeed.login(user.id);OneSignal.User.addTagWithKey('plan', 'gold');await Takeed.User.addTag('plan', 'gold');
  1. احذف google-services.json وإضافة Google services من Gradle إن كانا موجودين لأجل OneSignal فقط. تأكيد يعطي الحزمة إعدادات Firebase من حساب الخدمة الذي أضفته في الخطوة 1.
  2. على iOS: استبدل ملف Notification Service Extension بالملف extension/NotificationService.swift من الحزمة، واحذف OneSignal pod من ذلك الـ target.
  3. غيّر أسماء بقية الاستدعاءات حسب هذا الجدول:
OneSignal تأكيد
OneSignal.initialize(appId) Takeed.initialize(appId)
OneSignal.login(id) / logout() Takeed.login(id) / logout()
OneSignal.User.addTagWithKey(k, v) Takeed.User.addTagWithKey(k, v) أو addTag(k, v)
OneSignal.User.addTags / removeTag / removeTags الأسماء نفسها
OneSignal.User.addEmail / addSms الأسماء نفسها (أو setEmail / setPhone)
OneSignal.User.pushSubscription.optIn() / optOut() / id الأسماء نفسها
OneSignal.Notifications.requestPermission(true) كما هو
OneSignal.Notifications.addClickListener كما هو؛ ونوع الحدث TakeedNotificationClickEvent
OneSignal.Notifications.addForegroundWillDisplayListener كما هو؛ event.preventDefault() / event.display()
OneSignal.Debug، Location، InAppMessages، LiveActivities غير متاح

الويب (v16)#

− قبل+ بعد
<script src="https://cdn.onesignal.com/sdks/web/v16/OneSignalSDK.page.js" defer></script><script src="https://takeed-iq.com/sdk/v1/takeed.js" defer></script><script>  window.OneSignalDeferred = window.OneSignalDeferred || [];  OneSignalDeferred.push(async (OneSignal) => {    await OneSignal.init({ appId: 'ONESIGNAL-APP-ID' });  window.TakeedDeferred = window.TakeedDeferred || [];  TakeedDeferred.push(async (Takeed) => {    await Takeed.init({ appId: 'TAKEED-APP-ID', serviceWorkerPath: '/push/TakeedSDKWorker.js', serviceWorkerScope: '/push/' });  });</script>
OneSignal تأكيد
OneSignalDeferred.push(...) TakeedDeferred.push(...)
OneSignal.init({ appId }) Takeed.init({ appId, serviceWorkerPath })
OneSignalSDKWorker.js TakeedSDKWorker.js، يُخدَم من نطاقك أنت
login، logout، Notifications.permission، Notifications.requestPermission الأسماء نفسها

يوضّح البدء السريع: الويب أين تضع ملف الـ worker.

4استورد مشتركيك#

  1. من OneSignal، صدّر مشتركيك في ملف CSV.
  2. في تأكيد، افتح صفحة مستخدمو الإشعارات في التطبيق واستخدم الاستيراد من OneSignal. اختر المفتاح الذي تستخدمه رموز أندرويد وiOS.
  3. تنتقل رموز أندرويد وiOS، وتصل إشعارات تأكيد حتى إلى الهواتف التي ما زالت على إصدار تطبيقك القديم. أما اشتراكات الويب فلا تنتقل (لأنها مرتبطة بمفاتيح OneSignal)، والمتصفحات التي سمحت بالإشعارات تشترك من جديد تلقائيًا عند زيارتها التالية لصفحة فيها حزمة تأكيد.

5أكمل الانتقال#

  1. اختبر أولًا: من صفحة مستخدمو الإشعارات اجعل هاتفك جهاز اختبار، ثم أرسل إلى شريحة Test Users من صفحة اختبار الإشعارات.
  2. حوّل خادمك إلى تأكيد في كل عمليات الإرسال. لا ترسل الإشعار نفسه عبر الخدمتين معًا، فالهواتف المسجّلة في الاثنتين ستستلمه مرتين.
  3. انشر إصدار التطبيق الذي يحمل حزمة تأكيد. الهواتف المحدّثة والتثبيتات الجديدة تسجّل في تأكيد مباشرة.
  4. عندما تبدو الأرقام في سجل الإشعارات صحيحة، أوقف تطبيق OneSignal.

جرّبه على رقمك: مؤسستك الأولى تأتي مع 5 رموز الواتساب مجانًا.

أنشئ حسابًا