การแจ้งเตือนโดยใช้ 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 ต้องการ:
• 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 SharedVariables.hpp
• C ++
UNIT1.CPP UNITION1.H
Android ในการส่งการแจ้งเตือนแบบพุชบน Android คุณต้องสร้างบัญชีการส่งข้อความคลาวด์ Firebase และการใช้คอนโซล (เข้าสู่ระบบ) คุณต้องสร้างแอพของคุณเองและกำหนดตัวระบุแอปพลิเคชันซึ่งจะต้องเหมือนกันในแอปพลิเคชันสุดท้าย (เช่น com.duolabs.mypushapp) iOS บน iOS คุณต้องสร้างใบรับรองพุชบนไซต์นักพัฒนา Apple ซึ่งช่วยให้คุณสามารถส่งการแจ้งเตือนแบบพุชไปยังแอปพลิเคชันเฉพาะภายในโดเมนแอปพลิเคชันที่หลากหลาย (เช่น com.duolabs.mypushapp) การแจ้งเตือนสำหรับ Android ต้องมีบัญชี FCM และการแจ้งเตือนสำหรับ Apple เราจะส่งข้อความพุชโดยใช้สคริปต์. php สองตัวหนึ่งรายการสำหรับ Android และหนึ่งสำหรับ iOS
คำอธิบายรหัสเล็ก ๆ น้อย ๆ
รหัส C ++:
ฟังก์ชั่น:
บูล __fastcall checkinet ();
_Checks หากมีการเชื่อมต่ออินเทอร์เน็ต ไม่น่าสนใจ
เป็นโมฆะ __fastCall TFORM1 :: RESENDREQUESTBUTCLICK (TOBJECT *SENDER) _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;
เป็นโมฆะ __fastcall tform1 :: onserviceConnectionChange (tobject *ผู้ส่ง, tpushservice :: tchanges achange)
_ เมื่อได้รับโทเค็น ได้รับโทเค็น Android ในรูปแบบ FCM (สตริงยาว) และ Token Apple จะถูกส่งกลับในรูปแบบ HEX (32BYTES) ค่าโทเค็นของ Apple จะถูกส่งผ่านจาก Delphi ไป C ++ โดยใช้“ String Apnstoken” ประกาศใน SharedVariables.pas
เป็นโมฆะ __fastcall tform1 :: resendrequestbutclick (tobject *ผู้ส่ง)
_requests สำหรับแอปพลิเคชันอุปกรณ์มือถือที่จะลงทะเบียนผ่าน FCM ไปยัง FCM และ APN Servers และ Triggers Function:
เป็นโมฆะ __fastcall tform1 :: onreceivenotificationEvent ( ผู้ส่ง tobject, tpushservicenotification const anotification)
_ ฟังก์ชั่นนี้กระตุ้นเมื่อได้รับข้อความแจ้งเตือน
• ID อุปกรณ์ยังคงเหมือนเดิมในทุกอุปกรณ์และจะถูกส่งไปยัง APN หรือ FCM เพื่อรับโทเค็นสำหรับการแจ้งเตือนการกดระยะไกล การเปลี่ยนแปลงโทเค็นทุกครั้งที่ติดตั้งแอปพลิเคชัน (การติดตั้งใหม่) หากคุณลงทะเบียนบนฐานข้อมูลโทเค็นอย่าลืมอัปเดตและตรวจสอบทุกครั้งที่แอปพลิเคชันมือถือเริ่มต้นเนื่องจากอาจมีการเปลี่ยนแปลงเนื่องจากการติดตั้งแอปพลิเคชันใหม่ (ลบ-> ติดตั้ง)
•แอปพลิเคชัน C ++ นี้ใช้ซอร์สโค้ด Delphi (เครดิตไปยัง Dave Nottage@ Delphi World) ขอบคุณอย่างอบอุ่นและความซาบซึ้งของฉันที่มีต่อ Dave Nottage สำหรับเวลาและความอดทนของเขาที่จ่ายให้ฉัน! อย่าลืมดูเว็บไซต์ที่ยอดเยี่ยมของเขาสำหรับคนรัก Delphi !!
•คู่มือที่ดีสำหรับการลงทะเบียน APN สามารถพบได้ที่นี่: https://www.raywenderlich.com/584-push-notifications-tutorial-getting-started
•เราตัดสินใจไม่หลีกเลี่ยง FCM SDK เพื่อหลีกเลี่ยงความจริงที่ว่าจะเชื่อมโยงกับบริการของ Google ซึ่งเป็นและยังคงยอดเยี่ยม แต่มีการควบคุมการแจ้งเตือนแบบพุชมากขึ้นทำให้นักพัฒนามีอิสระในการดำเนินการตามที่เขาต้องการ
ขอให้สนุกและเพลิดเพลิน ข้อเสนอแนะใด ๆ จะได้รับการชื่นชมอย่างมาก Riccardo Alessi