使用Embarcadero Rad Studio Tokyo 10.2.3推送通知,在Android和Apple設備上用C ++和Delphi編寫的Apple設備。
該項目基於C ++代碼和Delphi代碼。主要的核心應用程序將在C ++中使用Delphi代碼作為單獨的單元來開發,以完成結果。該文檔專門用於所有努力使用Embarcadero Rad Studio製作自己的推送通知的人,並使用Android SM-520(Galaxy A5)和iPhone X(iOS 11.4.1)在Tokyo 10.2.3上進行了測試。
_需要:
•Delphi
dw.iosapi.usernotification.pas dw.iosapi.usernotification.hpp
dw.remotenotificationpatch.ios.pas dw.remotenotificationpatch.ios.hpp
dw.pushclient.pas dw.pushclient.hpp
dw.registerfcm.pas dw.registerfcm.hpp
sharedVariobles.pas sharedVariobles.hpp
•C ++
Unit1.cpp Unit1.h
安卓。要在Android上發送推送通知,您需要創建一個Firebase Cloud消息傳遞帳戶並使用控制台(登錄)您需要創建自己的應用程序並將其分配給它一個應用程序標識符,該應用程序標識符必須在最終應用程序(例如com.duolabs.mypushapp)上相同。在iOS上,您需要在Apple Developers網站上創建推送證書,該網站使您可以在相同範圍的應用程序域(例如com.duolabs.mypushs.mypushapp)通知Android的特定應用程序中將推送通知發送到Android的通知,需要具有FCM帳戶,並且Apple的通知必須具有附詞和cerifitate。我們將使用兩個.php腳本發送推送消息,一個用於Android,另一個用於iOS。
小代碼解釋。
C ++代碼:
功能:
bool __fastcall checkInet();
_ Checks如果有Internet連接可用。不那麼有趣。
void __fastcall tform1 :: resendrequestbutclick(tobject *sender)_requests _requests用於通過FCM註冊到FCM和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 :: OnServiceConnectionChange(tobject *sender,tpushservice :: tchanges achange)
_收到令牌時。 Android令牌以FCM格式(長字符串)接收,並且Apple令牌以十六進制格式(32 Boiltes)返回。蘋果令牌值從delphi傳遞到c ++,使用“ string apnstoken”在sharedVariables.pas中聲明
void __fastcall tform1 :: resendrequestbutclick(tobject *sender)
_ requeSts用於通過FCM註冊的移動設備應用程序到FCM和APN服務器以及觸發器功能:
void __fastcall tform1 :: onreceivenotificationEvent(tobject sender,tpushserviceNotification const anotification)
_收到通知消息時,該功能觸發
•設備ID在每個設備上保持不變,並發送到APN或FCM以獲取以遠程推送通知的令牌。每次安裝應用程序(新安裝)時,令牌會更改。如果您在DB上註冊,請記住要進行更新並進行檢查,每次移動應用程序啟動時,由於該應用程序的重新安裝可能會更改(remove-> install)。
•此C ++應用程序基於Delphi源代碼(dave nottage@ delphi world)。熱情的感謝和我感謝Dave Nottage的時間和耐心,這給了我!別忘了看他為德爾福愛好者的出色網站! !
•可以在此處找到apn註冊的好指南
•我們決定不避免FCM SDK,以避免與Google服務相關的事實,而Google的服務仍然很棒,但對推送通知有更多的控制,可以使開發人員自由按照他的意願行動。
玩得開心,享受。任何反饋都將不勝感激。里卡多·阿里西(Riccardo Alessi)