ادفع الإخطار باستخدام Embarcadero Rad Studio Tokyo 10.2.3 على أجهزة Android و Apple المكتوبة في C ++ و Delphi.
يعتمد هذا المشروع على رمز C ++ ورمز Delphi. من المفترض أن يتم تطوير التطبيق الأساسي الرئيسي في C ++ باستخدام رمز Delphi كوحدات منفصلة لإنجازها للنتيجة. تم تخصيص هذا المستند لجميع أولئك الذين حاولوا بجد إخطارهم الخاص بالدفع باستخدام Embarcadero Rad Studio ويتم اختباره على الإصدار Tokyo 10.2.3 مع Android SM-520 (Galaxy A5) و iPhone X (iOS 11.4.1)
_file مطلوب:
• دلفي
dw.iosapi.usernotifications.pas dw.iosapi.usernotifications.hpp
dw.RemotEnotificationspatch.ios.pas dw.remotenotificationspatch.ios.hpp
dw.pushclient.pas dw.pushclient.hpp
dw.registerfcm.pas dw.registerfcm.hpp
sharevariables.pas servariables.hpp
• C ++
UNIT1.CPP UNIT1.H
Android. لإرسال إشعارات الدفع على Android ، تحتاج إلى إنشاء حساب مراسلة سحابة Firebase واستخدام وحدة التحكم (تسجيل الدخول) ، الذي تحتاجه لإنشاء تطبيقك الخاص وتعيينه معرف تطبيق يجب أن يكون هو نفسه في التطبيق النهائي (على سبيل المثال com.duolabs.mypushapp) iOS. في iOS ، تحتاج إلى إنشاء شهادة دفع على موقع Apple Developers والتي تتيح لك إرسال إشعارات الدفع إلى تطبيق معين ضمن نفس النطاق من مجال التطبيق (على سبيل المثال. com.duolabs.mypushapp) يجب أن يكون لدى Android حساب FCM ويجب أن يكون للإشعار عن Apple Appid و Push Cerimicate. سنقوم بإرسال رسائل الدفع باستخدام نصين. php ، واحدة لنظام Android وواحد لنظام التشغيل iOS.
شرح رمز صغير.
رمز C ++:
وظائف:
Bool __fastCall checkInet () ؛
_checks إذا كان اتصال الإنترنت متاحًا. ليست مثيرة للاهتمام.
void __fastcall tform1 :: ResendRequestButClick (tobject *sender) _requests لتطبيق الجهاز المحمول ليتم تسجيله من خلال FCM إلى خوادم و APN و APN وظائف بمجرد استلام الرمز المميز: تم استلام الرمز المميز:
المتغيرات:
String ServerAppID = L"8189xxxxxxxxx";
FPushClient->GCMAppID = ServerAppID;
FPushClient->ServerKey = L"AAAAxxxxxxx";
FPushClient->BundleID = L"com.duolabs.mypushapp";
FPushClient->UseSandbox = true;
FPushClient->OnChange = &OnServiceConnectionChange;
FPushClient->OnReceiveNotification = &OnReceiveNotificationEvent;
FPushClient->Active = true;
void __fastcall tform1 :: onServiceConnectionChang
_ عندما يتم استلام رمز. يتم استلام رمز Android بتنسيق FCM (سلسلة طويلة) ويتم إرجاع رمز Apple بتنسيق Hex (32Bytes). يتم تمرير قيمة رمز Apple من Delphi إلى C ++ باستخدام "سلسلة apnstoken" المعلنة في المشاركين.
void __fastcall tform1 :: ResendRequestButclick (tobject *sender)
_requests لتسجيل تطبيق الجهاز المحمول من خلال FCM إلى خوادم ومحفزات APN FCM و APN:
void __fastcall tform1 :: onReceivenotificationevent (Tooject Sender ، TpushServicenotification const anotification)
_ هذه الوظيفة تدور عند تلقي رسالة إخطار
• يظل معرف الجهاز كما هو على كل جهاز ويتم إرساله إلى APN أو FCM للحصول على رمز لإخطار الدفع عن بُعد. التغييرات الرمزية في كل مرة يتم تثبيت التطبيق (تثبيت جديد). إذا قمت بالتسجيل على DB ، تذكر الرمز المميز تحديثه والتحقق منه في كل مرة يبدأ فيها تطبيق الهاتف المحمول كما قد يكون قد تغير بسبب إعادة تثبيت التطبيق (إزالة> تثبيت).
• يعتمد تطبيق C ++ على رمز مصدر Delphi (الاعتمادات إلى Dave Nottage@ Delphi World). شكراً لكم ، وتقديري لديف نوتاج على وقته وصبره الذي دفعته لي! لا تنسى إلقاء نظرة على موقعه الرائع لمحبي دلفي !!
• يمكن العثور على دليل جيد لتسجيل APN هنا: https://www.raywenderlich.com/584-push-notifications-tutorial-getting-started
• قررنا عدم تجنب FCM SDK لتجنب حقيقة أن تكون مرتبطة بخدمات Google التي هي ولا تزال رائعة ، ولكن لدينا المزيد من السيطرة على إشعار الدفع يحرر المطور مجانًا للطريقة التي يريدها.
استمتع واستمتع. أي ردود فعل سيكون موضع تقدير كبير. ريكاردو أليسي