PEMBERITAHUAN TUKU Menggunakan Embarcadero Rad Studio Tokyo 10.2.3 pada perangkat Android dan Apple yang ditulis dalam C ++ dan Delphi.
Proyek ini didasarkan pada kode C ++ dan kode Delphi. Aplikasi inti utama dimaksudkan untuk dikembangkan dalam C ++ menggunakan kode Delphi sebagai unit terpisah untuk mencapai hasilnya. Dokumen ini didedikasikan untuk semua orang yang berusaha keras untuk membuat pemberitahuan push mereka sendiri menggunakan Embarcadero Rad Studio dan diuji pada versi Tokyo 10.2.3 dengan Android SM-520 (Galaxy A5) dan iPhone X (iOS 11.4.1)
_File dibutuhkan:
• Delphi
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
Sharedvariables.pas sharedvariable.hpp
• C ++
Unit1.cpp Unit1.h
Android. Untuk mengirim pemberitahuan push di Android, Anda perlu membuat akun Firebase Cloud Messaging dan menggunakan konsol (login) Anda perlu membuat aplikasi Anda sendiri dan menetapkannya pengidentifikasi aplikasi yang harus sama pada aplikasi akhir (ex. Com.duolabs.mypushapp) iOS. Di iOS Anda perlu membuat sertifikat push di situs pengembang Apple yang memungkinkan Anda untuk mengirim pemberitahuan push ke aplikasi tertentu dalam kisaran domain aplikasi yang sama (mis. Com.duolabs.mypushapp) pemberitahuan untuk Android perlu memiliki akun FCM dan pemberitahuan untuk Apple harus memiliki cerificate appid dan dorong. Kami akan mengirim pesan push menggunakan dua skrip .php, satu untuk Android dan satu untuk iOS.
Penjelasan Kode Kecil.
Kode C ++:
Fungsi:
bool __fastcall checkinet ();
_Checks Jika koneksi internet tersedia. Tidak begitu menarik.
void __fastcall tForm1 :: resendRequestButClick (tobject *pengirim) _REQUESTS untuk aplikasi perangkat seluler untuk didaftarkan melalui FCM ke server FCM dan APN dan memicu fungsi setelah OnServiceConnectionChange Token diterima:
Variabel:
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 :: oncerviceConnectionChange (tobject *pengirim, tpushservice :: tchanges achange)
_Ketika token diterima. Android Token diterima dalam format FCM (string panjang) dan Token Apple dikembalikan dalam format hex (32bytes). Nilai token Apple diteruskan dari Delphi ke C ++ menggunakan "String Apnstoken" dinyatakan dalam sharedvariables.pas
void __fastcall tform1 :: resendRequestButClick (tobject *pengirim)
_REQUESTS untuk aplikasi perangkat seluler terdaftar melalui FCM ke FCM dan APN Server dan Fungsi Pemicu:
void __fastcall tform1 :: onreceiventificationEvent (tobject pengirim, tpushserviceNotification const anotification)
_ Fungsi ini memicu saat pesan pemberitahuan diterima
• ID perangkat tetap sama di setiap perangkat dan dikirim ke APN atau FCM untuk mendapatkan token untuk pemberitahuan push jarak jauh. Token berubah setiap kali aplikasi diinstal (instalasi baru). Jika Anda mendaftar pada DB token, ingatlah untuk memperbarui dan memeriksanya setiap kali aplikasi seluler dimulai karena mungkin telah berubah karena instalasi ulang aplikasi (hapus-> instal).
• Aplikasi C ++ ini didasarkan pada kode sumber Delphi (kredit ke Dave Nottage@ Delphi World). Terima kasih yang hangat dan penghargaan saya kepada Dave Nottage atas waktu dan kesabarannya terbayar untuk saya! Jangan lupa untuk melihat situs webnya yang luar biasa untuk pecinta Delphi !!
• Panduan yang bagus untuk pendaftaran APN dapat ditemukan di sini: https://www.raywenderlich.com/584-Push-notifications-tutorial-getting-started
• Kami memutuskan untuk tidak menghindari FCM SDK untuk menghindari fakta untuk terikat pada layanan Google yang dan tetap hebat tetapi memiliki lebih banyak kontrol pada pemberitahuan push set pengembang bebas untuk bertindak seperti yang diinginkannya.
Bersenang -senang dan nikmati. Umpan balik apa pun akan sangat dihargai. Riccardo Alessi