คู่มือ SDK API
เวอร์ชันที่ใช้งานได้
เวอร์ชันของ MTPush iOS SDK ที่ตรงกับเอกสารนี้คือ v3.0.0 หรือใหม่กว่า
การตั้งค่าศูนย์ข้อมูล
คำอธิบายฟังก์ชัน
ฟังก์ชันนี้ใช้เพื่อจับคู่ศูนย์ข้อมูลที่คุณเลือกใน EngageLab Portal โปรดตรวจสอบให้แน่ใจว่าศูนย์ข้อมูลที่คุณตั้งค่าสอดคล้องกับที่เลือกในพอร์ทัล หากไม่ได้ตั้งค่า SDK จะใช้โหนดศูนย์ข้อมูลสิงคโปร์เป็นค่าเริ่มต้น
ในเวอร์ชัน v4.3.5 และใหม่กว่า อินเทอร์เฟซนี้จะไม่ทำงาน นักพัฒนาไม่จำเป็นต้องเรียกใช้อินเทอร์เฟซนี้เพื่อตั้งค่าศูนย์ข้อมูลด้วยตนเอง SDK จะจับคู่ศูนย์ข้อมูลที่เกี่ยวข้องโดยอัตโนมัติตาม appkey
เวอร์ชันที่รองรับ
เวอร์ชันเริ่มต้นที่รองรับ: v4.3.0
เวอร์ชันที่หมดอายุ
เวอร์ชันเริ่มต้นที่หมดอายุ: v4.3.5
นิยามอินเทอร์เฟซ
- (void)setSiteName:(NSString *)siteName;
คำอธิบายพารามิเตอร์
*siteName
- ชื่อศูนย์ข้อมูล
คำแนะนำการเรียกใช้
โปรดเรียกใช้อินเทอร์เฟซนี้ก่อนเรียกอินเทอร์เฟซการเริ่มต้น (setupWithOption:channel:apsForProduction:advertisingIdentifier)
API แท็กและนามแฝง (iOS)
คำอธิบายฟังก์ชัน
ข้อควรระวัง โปรดให้ความสนใจกับการจัดการผลลัพธ์การเรียกกลับเมื่อตั้งค่าแท็กและนามแฝง
เฉพาะเมื่อค่าส่งกลับของ callback เป็น 0 การตั้งค่าจะสำเร็จและสามารถส่งการแจ้งเตือนไปยังเป้าหมายได้ มิฉะนั้น API ของเซิร์ฟเวอร์จะส่งกลับข้อผิดพลาด 1011 ฟังก์ชัน callback ทั้งหมดทำงานบนเธรดหลัก
มี API ที่เกี่ยวข้องหลายตัวสำหรับการจัดการนามแฝงและแท็ก
API เหล่านี้สามารถเรียกใช้ได้ทุกที่ในแอป
นามแฝง alias
นามแฝงใช้เพื่อระบุผู้ใช้ที่ติดตั้งแอปพลิเคชัน นามแฝงนี้สามารถใช้เพื่อระบุเมื่อส่งข้อความไปยังผู้ใช้รายนี้ในอนาคต สามารถระบุนามแฝงได้เพียงหนึ่งรายการต่อผู้ใช้
แนะนำให้ใช้นามแฝงที่แตกต่างกันสำหรับผู้ใช้ที่แตกต่างกันในแอปพลิเคชันเดียวกัน วิธีนี้ผู้ใช้จะถูกระบุโดยนามแฝงของพวกเขาเมื่อใดก็ตามที่เป็นไปได้
ตัวอย่าง: ในเกมที่ผู้ใช้ต้องการเข้าสู่ระบบ นามแฝงอาจถูกตั้งเป็น userid เมื่อเกมกำลังทำงาน หากพบว่าผู้ใช้ไม่ได้เล่นเกมเป็นเวลา 3 วัน API ฝั่งเซิร์ฟเวอร์จะถูกเรียกตาม userid เพื่อส่งการแจ้งเตือนไปยังไคลเอนต์เพื่อเตือนผู้ใช้
แท็ก tag
ติดแท็กผู้ใช้ที่ติดตั้งแอป วัตถุประสงค์หลักคือเพื่อให้นักพัฒนาสามารถส่งข้อความ Push แบบกลุ่มตามแท็กได้
สามารถมีได้หลายแท็กต่อผู้ใช้
ตัวอย่าง: game, old_page, women
เพิ่มแท็ก
เรียกใช้ API นี้เพื่อเพิ่มแท็กและส่งกลับผลลัพธ์ในบล็อก
หมายเหตุ: อินเทอร์เฟซนี้เป็นตรรกะการเพิ่ม ไม่ใช่การเขียนทับ
เวอร์ชันที่รองรับ
เวอร์ชันที่รองรับ: v3.5.0
นิยามอินเทอร์เฟซ
+ (void)addTags:(NSSet<NSString *> *)tags
completion:(MTPushTagsOperationCompletion)completion
seq:(NSInteger)seq;
คำอธิบายพารามิเตอร์
tags
- ไม่สามารถตั้งค่าเป็น nil หรือคอลเลกชันว่าง ([NSSet set])
- ประเภทของสมาชิกคอลเลกชันต้องเป็น NSString
- ตั้งค่าอย่างน้อยหนึ่งแท็กต่อการเรียก
- องค์ประกอบของแท็กที่ถูกต้อง: ตัวอักษร (case-sensitive), ตัวเลข, ขีดล่าง, อักษรจีน, อักขระพิเศษ @!#$&*+=.|
- ข้อจำกัด: ความยาวของชื่อแท็กแต่ละชื่อจำกัดที่ 40 ไบต์ และสามารถตั้งค่าได้สูงสุด 1,000 แท็ก แต่ความยาวทั้งหมดต้องไม่เกิน 5 K ไบต์ (ต้องใช้การเข้ารหัส Utf-8 เพื่อกำหนดความยาว)
- อุปกรณ์เดียวรองรับสูงสุด 1,000 แท็ก ไม่มีข้อจำกัดเกี่ยวกับจำนวนแท็กทั่วโลกของแอป
completion
- ใช้สำหรับ callback เพื่อส่งกลับพารามิเตอร์ที่เกี่ยวข้อง tags และส่งกลับรหัสสถานะที่เกี่ยวข้อง: 0 หมายถึงสำเร็จ โปรดดูคำจำกัดความรหัสข้อผิดพลาดสำหรับรหัสส่งกลับอื่น ๆ seq คือหมายเลขลำดับเซสชันที่ส่งผ่านเมื่อเรียก
*seq
* หมายเลขลำดับที่ส่งผ่านระหว่างการร้องขอจะถูกส่งกลับตามเดิมเมื่อมีการเรียกกลับ
เขียนทับแท็ก
เรียกใช้ API นี้เพื่อตั้งค่าแท็กและส่งกลับผลลัพธ์ในบล็อก
หมายเหตุ: อินเทอร์เฟซนี้เป็นตรรกะการเขียนทับ ไม่ใช่การเพิ่ม การเรียกใช้อินเทอร์เฟซนี้จะเขียนทับแท็กทั้งหมดที่ตั้งไว้ก่อนหน้านี้
เวอร์ชันที่รองรับ
เวอร์ชันที่รองรับ: v3.5.0
นิยามอินเทอร์เฟซ
+ (void)setTags:(NSSet<NSString *> *)tags
completion:(MTPushTagsOperationCompletion)completion
seq:(NSInteger)seq;
คำอธิบายพารามิเตอร์
tags
- ไม่สามารถตั้งค่าเป็น nil หรือคอลเลกชันว่าง ([NSSet set])
- ประเภทของสมาชิกคอลเลกชันต้องเป็น NSString
- ตั้งค่าอย่างน้อยหนึ่งแท็กต่อการเรียก
- องค์ประกอบของแท็กที่ถูกต้อง: ตัวอักษร (case-sensitive), ตัวเลข, ขีดล่าง, อักษรจีน, อักขระพิเศษ @!#$&*+=.|
- ข้อจำกัด: ความยาวของชื่อแท็กแต่ละชื่อจำกัดที่ 40 ไบต์ และสามารถตั้งค่าได้สูงสุด 1,000 แท็ก แต่ความยาวทั้งหมดต้องไม่เกิน 5 K ไบต์ (ต้องใช้การเข้ารหัส Utf-8 เพื่อกำหนดความยาว)
- อุปกรณ์เดียวรองรับสูงสุด 1,000 แท็ก ไม่มีข้อจำกัดเกี่ยวกับจำนวนแท็กทั่วโลกของแอป
completion
- ใช้สำหรับ callback เพื่อส่งกลับพารามิเตอร์ที่เกี่ยวข้อง tags และส่งกลับรหัสสถานะที่เกี่ยวข้อง: 0 หมายถึงสำเร็จ โปรดดูคำจำกัดความรหัสข้อผิดพลาดสำหรับรหัสส่งกลับอื่น ๆ seq คือหมายเลขลำดับเซสชันที่ส่งผ่านเมื่อเรียก
*seq
* หมายเลขลำดับที่ส่งผ่านระหว่างการร้องขอจะถูกส่งกลับตามเดิมเมื่อมีการเรียกกลับ
ลบแท็ก
เรียกใช้ API นี้เพื่อลบแท็ก ส่งกลับผลลัพธ์ในบล็อก
เวอร์ชันที่รองรับ
เวอร์ชันที่รองรับ: v3.5.0
นิยามอินเทอร์เฟซ
+ (void)deleteTags:(NSSet<NSString *> *)tags
completion:(MTPushTagsOperationCompletion)completion
seq:(NSInteger)seq;
คำอธิบายพารามิเตอร์
tags
- ไม่สามารถตั้งค่าเป็น nil หรือคอลเลกชันว่าง ([NSSet set])
- ประเภทของสมาชิกคอลเลกชันต้องเป็น NSString
- ลบอย่างน้อยหนึ่งแท็กต่อการเรียก
- องค์ประกอบของแท็กที่ถูกต้อง: ตัวอักษร (case-sensitive), ตัวเลข, ขีดล่าง, อักษรจีน, อักขระพิเศษ @!#$&*+=.|
- ข้อจำกัด: ความยาวของชื่อแท็กแต่ละชื่อจำกัดที่ 40 ไบต์ และสามารถลบได้สูงสุด 1,000 แท็ก แต่ความยาวทั้งหมดต้องไม่เกิน 5K ไบต์ (ต้องใช้การเข้ารหัส Utf-8 เพื่อกำหนดความยาว)
completion
- callback ส่งกลับพารามิเตอร์ที่เกี่ยวข้อง tags และส่งกลับรหัสสถานะที่เกี่ยวข้อง: 0 หมายถึงสำเร็จ โปรดดูคำจำกัดความรหัสข้อผิดพลาดสำหรับรหัสส่งกลับอื่น ๆ seq คือหมายเลขลำดับเซสชันที่ส่งผ่านเมื่อเรียก
*seq
* หมายเลขลำดับที่ส่งผ่านระหว่างการร้องขอจะถูกส่งกลับตามเดิมเมื่อมีการเรียกกลับ
ล้างแท็กทั้งหมด
เรียกใช้ API นี้เพื่อล้างแท็กทั้งหมด ส่งกลับผลลัพธ์ในบล็อก
เวอร์ชันที่รองรับ
เวอร์ชันที่รองรับ: v3.5.0
นิยามอินเทอร์เฟซ
+ (void)cleanTags:(MTPushTagsOperationCompletion)completion
seq:(NSInteger)seq;
คำอธิบายพารามิเตอร์
completion
- แท็กที่ส่งกลับโดย callback เป็น nil ส่งกลับรหัสสถานะที่เกี่ยวข้อง: 0 หมายถึงสำเร็จ โปรดดูคำจำกัดความรหัสข้อผิดพลาดสำหรับรหัสส่งกลับอื่น ๆ seq คือหมายเลขลำดับเซสชันที่ส่งผ่านเมื่อเรียก
*seq
* หมายเลขลำดับที่ส่งผ่านระหว่างการร้องขอจะถูกส่งกลับตามเดิมเมื่อมีการเรียกกลับ
คิวรีแท็ก
เรียกใช้ API นี้เพื่อรับแท็กทั้งหมด ส่งกลับผลลัพธ์ในบล็อก
เวอร์ชันที่รองรับ
เวอร์ชันที่รองรับ: v3.5.0
นิยามอินเทอร์เฟซ
+ (void)getAllTags:(MTPushTagsOperationCompletion)completion
seq:(NSInteger)seq;
คำอธิบายพารามิเตอร์
completion
- แท็กที่ส่งกลับโดย callback เป็นผลลัพธ์การคิวรี ส่งกลับรหัสสถานะที่เกี่ยวข้อง: 0 หมายถึงสำเร็จ โปรดดูคำจำกัดความรหัสข้อผิดพลาดสำหรับรหัสส่งกลับอื่น ๆ seq คือหมายเลขลำดับเซสชันที่ส่งผ่านเมื่อเรียก
*seq
* หมายเลขลำดับที่ส่งผ่านระหว่างการร้องขอจะถูกส่งกลับตามเดิมเมื่อมีการเรียกกลับ
ตรวจสอบแท็ก
เรียกใช้ API นี้เพื่อตรวจสอบว่าแท็กเป้าหมายถูกตั้งค่าหรือไม่
เวอร์ชันที่รองรับ
เวอร์ชันที่รองรับ: v3.5.0
นิยามอินเทอร์เฟซ
+ (void)validTag:(NSString *)tag
completion:(MTPushTagValidOperationCompletion)completion
seq:(NSInteger)seq;
คำอธิบายพารามิเตอร์
tag
- ไม่สามารถตั้งค่าเป็น nil หรือสตริงว่าง
- องค์ประกอบของแท็กที่ถูกต้อง: ตัวอักษร (case-sensitive), ตัวเลข, ขีดล่าง, อักษรจีน, อักขระพิเศษ @!#$&*+=.|
- ข้อจำกัด: ความยาวของชื่อแท็กแต่ละชื่อจำกัดที่ 40 ไบต์ (ต้องใช้การเข้ารหัส UTF-8 เพื่อกำหนดความยาว)
completion
- callback ส่งกลับพารามิเตอร์ที่เกี่ยวข้อง tag และส่งกลับรหัสสถานะที่เกี่ยวข้อง: 0 หมายถึงสำเร็จ โปรดดูคำจำกัดความรหัสข้อผิดพลาดสำหรับรหัสส่งกลับอื่น ๆ seq คือหมายเลขลำดับเซสชันที่ส่งผ่านเมื่อเรียก
- ตรวจสอบคุณสมบัติ isBind ใน callback เพื่อดูว่าถูกตั้งค่าหรือไม่ YES หมายถึงถูกตั้งค่าแล้ว
*seq
* หมายเลขลำดับที่ส่งผ่านระหว่างการร้องขอจะถูกส่งกลับตามเดิมเมื่อมีการเรียกกลับ
บล็อกแท็ก
typedef void (^MTPushTagsOperationCompletion)(NSInteger iResCode, NSSet *iTags, NSInteger seq); typedef void (^MTPushTagValidOperationCompletion)(NSInteger iResCode, NSSet *iTags, NSInteger seq, BOOL isBind);
ตั้งค่านามแฝง
เรียกใช้ API นี้เพื่อตั้งค่านามแฝง
เวอร์ชันที่รองรับ
เวอร์ชันที่รองรับ: v3.5.0
นิยามอินเทอร์เฟซ
+ (void)setAlias:(NSString *)alias
completion:(MTPushAliasOperationCompletion)completion
seq:(NSInteger)seq;
คำอธิบายพารามิเตอร์
-alias - ไม่สามารถตั้งค่าเป็น nil หรือสตริงว่าง @"" - แต่ละการเรียกจะตั้งค่านามแฝงที่มีผล ซึ่งจะเขียนทับการตั้งค่าก่อนหน้า - นามแฝงที่ถูกต้อง: ตัวอักษร (case-sensitive), ตัวเลข, ขีดล่าง, อักษรจีน, อักขระพิเศษ @!#$&*+=.| - ข้อจำกัด: ความยาวของชื่อนามแฝงจำกัดที่ 40 ไบต์ (ต้องใช้การเข้ารหัส Utf-8 เพื่อกำหนดความยาว)
completion
- callback ส่งกลับพารามิเตอร์ที่เกี่ยวข้อง alias และส่งกลับรหัสสถานะที่เกี่ยวข้อง: 0 หมายถึงสำเร็จ โปรดดูคำจำกัดความรหัสข้อผิดพลาดสำหรับรหัสส่งกลับอื่น ๆ seq คือหมายเลขลำดับเซสชันที่ส่งผ่านเมื่อเรียก
*seq
* หมายเลขลำดับที่ส่งผ่านระหว่างการร้องขอจะถูกส่งกลับตามเดิมเมื่อมีการเรียกกลับ
ลบนามแฝง
เรียกใช้ API นี้เพื่อลบนามแฝง ส่งกลับผลลัพธ์ในบล็อก
เวอร์ชันที่รองรับ
เวอร์ชันที่รองรับ: v3.5.0
นิยามอินเทอร์เฟซ
+ (void)deleteAlias:(MTPushAliasOperationCompletion)completion
seq:(NSInteger)seq;
คำอธิบายพารามิเตอร์
completion
- แท็กที่ส่งกลับโดย callback เป็น nil ส่งกลับรหัสสถานะที่เกี่ยวข้อง: 0 หมายถึงสำเร็จ โปรดดูคำจำกัดความรหัสข้อผิดพลาดสำหรับรหัสส่งกลับอื่น ๆ seq คือหมายเลขลำดับเซสชันที่ส่งผ่านเมื่อเรียก
*seq
* หมายเลขลำดับที่ส่งผ่านระหว่างการร้องขอจะถูกส่งกลับตามเดิมเมื่อมีการเรียกกลับ
คิวรีนามแฝง
เรียกใช้ API นี้เพื่อคิวรีนามแฝงปัจจุบัน ส่งกลับผลลัพธ์ในบล็อก
เวอร์ชันที่รองรับ
เวอร์ชันที่รองรับ: v3.5.0
นิยามอินเทอร์เฟซ
+ (void)getAlias:(MTPushAliasOperationCompletion)completion
seq:(NSInteger)seq;
คำอธิบายพารามิเตอร์
completion
- แท็กที่ส่งกลับโดย callback เป็นผลลัพธ์การคิวรี ส่งกลับรหัสสถานะที่เกี่ยวข้อง: 0 หมายถึงสำเร็จ โปรดดูคำจำกัดความรหัสข้อผิดพลาดสำหรับรหัสส่งกลับอื่น ๆ seq คือหมายเลขลำดับเซสชันที่ส่งผ่านเมื่อเรียก
*seq
* หมายเลขลำดับที่ส่งผ่านระหว่างการร้องขอจะถูกส่งกลับตามเดิมเมื่อมีการเรียกกลับ
บล็อกนามแฝง
typedef void (^MTPushAliasOperationCompletion)(NSInteger iResCode, NSString *iAlias, NSInteger seq);
ข้อความในแอป
เวอร์ชันที่รองรับ
รองรับตั้งแต่เวอร์ชัน: v4.5.0
คำอธิบายฟังก์ชัน
หากต้องการใช้ฟีเจอร์ข้อความในแอป จำเป็นต้องกำหนดค่าอินเทอร์เฟซนี้ ข้อความในแอปจะถูกเรียกใช้งานระหว่างการเปลี่ยนหน้าและสามารถแสดงบนหน้าที่ระบุ อินเทอร์เฟซนี้จะซิงโครไนซ์การกระทำการเข้าหรือออกจากหน้าด้วย SDK ซึ่งจะจัดการตรรกะการแสดงข้อความในแอปตามการซิงโครไนซ์นี้
นิยามอินเทอร์เฟซ
+ (void)pageEnterTo:(NSString *)pageName
+ (void)pageLeave:(NSString *)pageName;
ตัวอย่างการใช้งาน
คำแนะนำการใช้งาน
โปรดใช้อินเทอร์เฟซ pageEnterTo:
และ pageLeave:
ร่วมกัน เรียก pageEnterTo:
เมื่อเข้าสู่หน้า และเรียก pageLeave:
เมื่อออกจากหน้า
ตัวอย่างการใช้งาน
// ตัวอย่างเช่น คุณสามารถใช้เมธอดเหล่านี้ในเมธอด viewDidAppear: และ viewDidDisappear: ของ ViewController
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[MTPushService pageEnterTo:@"AViewController"];
}
- (void)viewDidDisappear:(BOOL)animated {
[super viewDidDisappear:animated];
[MTPushService pageLeave:@"AViewController"];
}
รับเนื้อหาการแจ้งเตือนแบบพุช APNs
คำอธิบายฟังก์ชัน
อุปกรณ์ iOS รับการแจ้งเตือนแบบพุช (APNs) เมื่อผู้ใช้คลิกการแจ้งเตือนเพื่อเปิดแอปพลิเคชัน แอปพลิเคชันจะประมวลผลตามสถานะที่แตกต่างกัน จำเป็นต้องเพิ่มเมธอดต่อไปนี้ใน AppDelegate เพื่อรับเนื้อหา APNs
- หากสถานะของแอปไม่ได้ทำงานอยู่ เมธอดนี้จะถูกเรียก หาก launchOptions รวม UIApplicationLaunchOptionsRemoteNotificationKey หมายความว่าแอปถูกเปิดโดยผู้ใช้คลิกการแจ้งเตือน APNs หากไม่มีคีย์นี้ หมายความว่าแอปไม่ได้เริ่มต้นโดยการคลิก APNs แต่อาจเริ่มต้นโดยการคลิกไอคอนโดยตรงหรืออื่นๆ
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;
// รับเนื้อหา APNs:
NSDictionary *remoteNotification = [launchOptions objectForKey: UIApplicationLaunchOptionsRemoteNotificationKey]
- บน iOS 6 และต่ำกว่า เมธอดนี้จะถูกเรียกเมื่อแอปอยู่ที่หน้าหลักหรือเมื่อคลิกข้อความแจ้งเตือนในแถบการแจ้งเตือน คุณยังสามารถตรวจสอบว่าแอปพลิเคชันทำงานอยู่ที่หน้าหลักหรือไม่โดยตรวจสอบว่า applicationState ของ AppDelegate เป็น UIApplicationStateActive หรือไม่ กรณีดังกล่าวจะถูกจัดการในเมธอดนี้:
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo;
- สำหรับ iOS 7 หรือใหม่กว่า หากใช้ฟีเจอร์ Remote Notification ของ iOS 7 จำเป็นต้องใช้เมธอดการประมวลผลต่อไปนี้:
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler;
- สำหรับระบบ iOS 10 และใหม่กว่า เมธอดเดิม [application: didReceiveRemoteNotification:] จะถูกยกเลิกโดยระบบ
โดยใช้ UserNotifications Framework ใหม่ของ [UNUserNotificationCenterDelegate willPresentNotification: withCompletionHandler:] หรือ [UNUserNotificationCenterDelegate didReceiveNotificationResponse: withCompletionHandler:] เพื่อแทนที่ ในเวอร์ชันปัจจุบันหรือใหม่กว่า คุณสามารถใช้เมธอดโปรโตคอล MTPushRegisterDelegate ที่ถูกห่อหุ้มโดย SDK และปรับให้เข้ากับเมธอดโปรโตคอล delegate ที่เพิ่มใหม่ใน iOS10 นั่นคือ เมธอดต่อไปนี้:
- (void)mtpushNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(NSInteger))completionHandler;
// NSDictionary * userInfo = notification.request.content.userInfo;
// เนื้อหา APNs คือ userInfo
- (void)mtpNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)())completionHandler;
// NSDictionary * userInfo = response.notification.request.content.userInfo;
// เนื้อหา APNs คือ userInfo
ตัวอย่างโค้ด
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
// รับข้อมูลมาตรฐานของ APNs
NSDictionary *aps = [userInfo valueForKey:@"aps"];
NSString *content = [aps valueForKey:@"alert"]; //เนื้อหาที่แสดงในการพุช
NSInteger badge = [[aps valueForKey:@"badge"] integerValue]; //หมายเลขแบดจ์
NSString *sound = [aps valueForKey:@"sound"]; //เสียงที่เล่น
// รับเนื้อหาของฟิลด์ Extras
NSString *customizeField1 = [userInfo valueForKey:@"customizeExtras"]; //ฟิลด์ Extras บนเซิร์ฟเวอร์ คีย์กำหนดเอง
NSLog(@"content =[%@], badge=[%d], sound=[%@], customize field =[%@]",content,badge,sound,customizeField1);
// iOS 10 以下 Required
[MTPushService handleRemoteNotification:userInfo];
}
//iOS 7 Remote Notification
- (void)application:(UIApplication *)application didReceiveRemoteNotification: (NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
NSLog(@"this is iOS7 Remote Notification");
// iOS 10 - Required
[MTPushService handleRemoteNotification:userInfo];
completionHandler(UIBackgroundFetchResultNewData);
}
#pragma mark- MTPushRegisterDelegate // MTPushRegisterDelegate ถูกเพิ่มใน 2.1.9 จำเป็นต้องใช้เมธอดต่อไปนี้
// iOS 10 Support
- (void)mtpNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(NSInteger))completionHandler {
// Required
NSDictionary * userInfo = notification.request.content.userInfo;
if([notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) {
[MTPushService handleRemoteNotification:userInfo];
}
else {
// การแจ้งเตือนท้องถิ่น
}
completionHandler(UNNotificationPresentationOptionAlert); // หากต้องการใช้เมธอดนี้ เลือกว่าจะแจ้งเตือนผู้ใช้หรือไม่ มีสามประเภทคือ Badge, Sound และ alert ที่สามารถตั้งค่าได้
}
// iOS 10 Support
- (void)mtpNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler: (void (^)())completionHandler {
// Required
NSDictionary * userInfo = response.notification.request.content.userInfo;
if([response.notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) {
[MTPushService handleRemoteNotification:userInfo];
}
else {
// การแจ้งเตือนท้องถิ่น
}
completionHandler(); // ระบบต้องการให้เมธอดนี้ถูกเรียก
}
- สำหรับ iOS12 หรือใหม่กว่า UserNotifications Framework ของเมธอด callback ใหม่ [userNotificationCenter: openSettingsForNotification:] ในเวอร์ชัน 3.1.1 และใหม่กว่า MTPushRegisterDelegate ก็เพิ่มเมธอด callback ที่เกี่ยวข้อง เมธอดนี้จะถูกเรียกเมื่อแอปพลิเคชันถูกเข้าถึงจากหน้าจอการแจ้งเตือนภายนอกหรือหน้าจอการตั้งค่าการแจ้งเตือน
// iOS 12 Support
- (void)mtpNotificationCenter:(UNUserNotificationCenter *)center openSettingsForNotification:(UNNotification *)notification{
if (notification) {
//เข้าสู่แอปพลิเคชันโดยตรงจากหน้าจอการแจ้งเตือน
}else{
//เข้าสู่แอปพลิเคชันโดยตรงจากหน้าจอการแจ้งเตือน
}
}
รับเนื้อหาของข้อความพุชที่กำหนดเอง
คำอธิบายฟังก์ชัน
- ข้อความที่กำหนดเองจะถูกพุชเฉพาะเมื่อส่วนหน้าทำงานอยู่
- รับเนื้อหาข้อความที่กำหนดเองและชื่อเรื่องและฟิลด์เพิ่มเติมจากเซิร์ฟเวอร์ MTPush
วิธีการดำเนินการ
การรับเนื้อหาการพุชจาก iOS จำเป็นต้องลงทะเบียนการแจ้งเตือนในคลาส delegate และใช้เมธอด callback
ในเมธอด - (BOOL) application: (UIApplication) application didFinishLaunchingWithOptions: (NSDictionary) launchOptions เพิ่มโค้ดต่อไปนี้:
NSNotificationCenter *defaultCenter = [NSNotificationCenter defaultCenter];
[defaultCenter addObserver:self selector:@selector(networkDidReceiveMessage:) name:kMTCNetworkDidReceiveMessageNotification object:nil];
ใช้เมธอด callback networkDidReceiveMessage
- (void)networkDidReceiveMessage:(NSNotification *)notification {
NSDictionary * userInfo = [notification userInfo];
NSString *content = [userInfo valueForKey:@"content"];
NSString *messageID = [userInfo valueForKey:@"_j_msgid"];
NSDictionary *extras = [userInfo valueForKey:@"extras"];
NSString *customizeField1 = [extras valueForKey:@"customizeField1"]; //ฟิลด์เพิ่มเติม Extras ที่ส่งผ่านโดยเซิร์ฟเวอร์ คีย์กำหนดเอง
}
คำอธิบายพารามิเตอร์
- content:รับเนื้อหาของการพุช
- messageID:รับ messageID ของการพุช (key: @"_j_msgid")
- extras:รับพารามิเตอร์ที่กำหนดโดยผู้ใช้
- customizeField1:รับค่าที่กำหนดเองตามคีย์ที่กำหนดเอง
สำหรับข้อมูลเพิ่มเติม โปรดดูที่ demo ในชุดดาวน์โหลด SDK
รับเนื้อหาข้อความในแอป
เวอร์ชันที่รองรับ
v4.5.0 และเวอร์ชันที่ใหม่กว่า
คำอธิบายฟังก์ชัน
ข้อความในแอป: แอปต้องทำงานอยู่ที่หน้าหลักเพื่อรับข้อความในแอป ปัจจุบันข้อความในแอปแบ่งออกเป็นสามประเภท: banner, interstitial และ full-screen
โดยการตั้งค่าตัวแทนสำหรับฟีเจอร์ข้อความในแอปและใช้เมธอดตัวแทนที่เกี่ยวข้อง คุณสามารถรับเนื้อหาของข้อความในแอปได้
การดำเนินการ
เพิ่มตัวแทน
@interface AppDelegate ()<MTPushInAppMessageDelegate>
@end
ตั้งค่าตัวแทน
โปรดเพิ่มโค้ดต่อไปนี้ใน -(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
[MTPushService setInAppMessageDelegate:self];
เพิ่มเมธอดตัวแทนสำหรับการเรียกกลับข้อความในแอป
#pragma mark - MTPushInAppMessageDelegate
- (void)mtPushInAppMessageDidShow:(MTPushInAppMessage *)inAppMessage {
NSString *mesageId = inAppMessage.mesageId; // ID ข้อความ
NSString *title = inAppMessage.title; // ชื่อเรื่อง
NSString *content = inAppMessage.content; // เนื้อหา
NSArray *target = inAppMessage.target; // หน้าปลายทาง
NSString *clickAction = inAppMessage.clickAction; // URL การคลิก
NSDictionary *extras = inAppMessage.extras; // ฟิลด์เพิ่มเติม
NSLog(@"InAppMessageDidShow:\n mesageId: %@ \n title:%@ \n content:%@ \n target:%@ \n clickAction:%@ \n extras:%@", mesageId, title, content, target, clickAction, extras);
}
- (void)mtPushInAppMessageDidClick:(MTPushInAppMessage *)inAppMessage {
NSString *mesageId = inAppMessage.mesageId; // ID ข้อความ
NSString *title = inAppMessage.title; // ชื่อเรื่อง
NSString *content = inAppMessage.content; // เนื้อหา
NSArray *target = inAppMessage.target; // หน้าปลายทาง
NSString *clickAction = inAppMessage.clickAction; // URL การคลิก
NSDictionary *extras = inAppMessage.extras; // ฟิลด์เพิ่มเติม
NSLog(@"mtPushInAppMessageDidClick:\n mesageId: %@ \n title:%@ \n content:%@ \n target:%@ \n clickAction:%@ \n extras:%@", mesageId, title, content, target, clickAction, extras);
}
รับเนื้อหาข้อความเตือนเสริมการแจ้งเตือน
เวอร์ชันที่รองรับ
v4.5.1 และเวอร์ชันที่ใหม่กว่า
คำอธิบายฟังก์ชัน
ข้อความเตือนเสริมการแจ้งเตือน: เมื่อส่งการแจ้งเตือนไปยังผู้ใช้ที่ปิดการอนุญาตการแจ้งเตือน จะใช้การแจ้งเตือนท้องถิ่นเพื่อแทนที่การแจ้งเตือนพุชเพื่อเตือน
ผู้ใช้สามารถรับข้อความเตือนเสริมในแอปได้เฉพาะเมื่อแอปทำงานอยู่ที่หน้าหลัก หากต้องการใช้ฟีเจอร์นี้ คุณต้องเปิดสวิตช์ "การเตือนเสริมการแจ้งเตือน" ในการตั้งค่าขั้นสูงของแพลตฟอร์มพุช
โดยการตั้งค่าตัวแทนสำหรับการเตือนเสริมการแจ้งเตือนและใช้เมธอดตัวแทนที่เกี่ยวข้อง คุณสามารถรับชื่อเรื่องเนื้อหาและฟิลด์เพิ่มเติมของข้อความเตือนเสริมการแจ้งเตือนได้
วิธีการดำเนินการ
เพิ่มตัวแทน
@interface AppDelegate ()<MTPushNotiInMessageDelegate>
@end
ตั้งค่าตัวแทน
โปรดเพิ่มโค้ดต่อไปนี้ใน -(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
[MTPushService setNotiInMessageDelegate:self];
เพิ่มเมธอดตัวแทนสำหรับการเรียกกลับข้อความเตือนเสริมการแจ้งเตือน
#pragma mark - MTPushNotiInMessageDelegate
- (void)mtPushNotiInMessageDidShowWithContent:(NSDictionary *)content {
NSString *messageID = [content valueForKey:@"_j_msgid"];
NSDictionary *aps = [content valueForKey:@"aps"];
id customizeField1 = [content valueForKey:@"customizeField1"]; // คีย์ฟิลด์เพิ่มเติมในการตั้งค่าขั้นสูงของแพลตฟอร์มพุช
}
- (void)mtPushNotiInMessageDidClickWithContent:(NSDictionary *)content {
NSString *messageID = [content valueForKey:@"_j_msgid"];
NSDictionary *aps = [content valueForKey:@"aps"];
id customizeField1 = [content valueForKey:@"customizeField1"]; // คีย์ฟิลด์เพิ่มเติมในการตั้งค่าขั้นสูงของแพลตฟอร์มพุช
}
รับ RegistrationID
นิยาม RegistrationID
ครั้งแรกที่แอปพลิเคชันที่รวม SDK ของ MTPush ลงทะเบียนกับเซิร์ฟเวอร์ MTPush เรียบร้อยแล้ว เซิร์ฟเวอร์ MTPush จะส่งกลับไปยังไคลเอนต์ตัวระบุเฉพาะสำหรับอุปกรณ์ - RegistrationID SDK ของ MTPush ส่ง RegistrationID เป็นการออกอากาศไปยังแอปพลิเคชัน
แอปพลิเคชันสามารถบันทึก RegistrationID นี้บนเซิร์ฟเวอร์แอปพลิเคชันของตนและจากนั้นส่งข้อความหรือการแจ้งเตือนไปยังอุปกรณ์ตาม RegistrationID
รับ registrationID (พร้อมบล็อก)
นิยามอินเทอร์เฟซ
+ (void)registrationIDCompletionHandler:(void(^)(int resCode,NSString *registrationID))completionHandler;
คำอธิบายพารามิเตอร์
- (void(^)(int resCode,NSString *registrationID))completionHandler
- completionHandler: ใช้เพื่อประมวลผลผลลัพธ์ที่ส่งกลับของการตั้งค่า
- resCode: ส่งกลับรหัสสถานะผลลัพธ์
- registrationID: ส่งกลับ registrationID
[MTPushService registrationIDCompletionHandler:^(int resCode, NSString *registrationID) {
NSLog(@"resCode : %d,registrationID: %@",resCode,registrationID);
}];
เคล็ดลับ: แนะนำให้ใช้อินเทอร์เฟซนี้เพื่อรับ registrationID การเรียกใช้อินเทอร์เฟซนี้ในอีมูเลเตอร์ resCode จะส่งกลับ 1011 และ registrationID จะส่งกลับ nil
รับ registrationID
เรียกใช้ API นี้เพื่อรับ RegistrationID สำหรับแอปพลิเคชัน ค่าที่เกี่ยวข้องจะถูกส่งกลับเฉพาะเมื่อแอปพลิเคชันลงทะเบียนกับเซิร์ฟเวอร์ของ MTPush เรียบร้อยแล้ว มิฉะนั้นจะส่งกลับสตริงว่าง
นิยามอินเทอร์เฟซ
+(NSString *)registrationID
เคล็ดลับ: บน iOS 9 แอปพลิเคชันจะถูกลบและติดตั้งใหม่ devicetoken ที่ส่งกลับโดย APNs จะเปลี่ยน นักพัฒนาจำเป็นต้องรับ Registration id ล่าสุดของอุปกรณ์ โปรดเรียก "RegistrationID" อินเทอร์เฟซนี้ในเมธอดการใช้งาน kMTCNetworkDidLoginNotification เพื่อรับ RegistrationID
คำอธิบายเพิ่มเติม
การส่งข้อความและการแจ้งเตือนผ่าน RegistrationID
สามารถส่งการแจ้งเตือนและข้อความโดยใช้ RegistrationID พารามิเตอร์ผู้ชมสามารถส่งตาม RegistrationID
ตั้งค่า Badge
คำอธิบายฟังก์ชัน
badge เป็นตัวเลขที่ iOS ใช้เพื่อทำเครื่องหมายสถานะของแอป จะปรากฏที่มุมขวาบนของไอคอนแอป MTPush ได้ห่อหุ้มฟังก์ชัน badge ไว้ ทำให้แอปพลิเคชันสามารถอัปโหลดค่า badge ไปยังเซิร์ฟเวอร์ MTPush ได้ หลังบ้านของ MTPush จะช่วยจัดการค่าข้อมูล badge ที่เกี่ยวข้องสำหรับแต่ละผู้ใช้ ทำให้การดำเนินการตั้งค่า push badge ง่ายขึ้น
ในทางปฏิบัติ นักพัฒนาสามารถเพิ่มหรือลบค่า badge โดยตรงได้โดยไม่ต้องรักษาความสัมพันธ์ระหว่างผู้ใช้และค่า badge หากต้องการส่งข้อความ เพียง ตั้งค่าเครื่องหมายมุม +1 EngageLab จะเพิ่ม +1 ให้กับค่า badge ของผู้ใช้แต่ละรายที่เก็บไว้ในเซิร์ฟเวอร์โดยอัตโนมัติ จากนั้นส่งไปยังผู้ใช้
ตั้งค่า badge
ตั้งค่าค่า badge ที่เก็บไว้ในเซิร์ฟเวอร์ MTPush
นิยามอินเทอร์เฟซ
+ (BOOL)setBadge:(int)value
คำอธิบายพารามิเตอร์
- value ค่าตั้งแต่ 0 ถึง 99999
ในเครื่องยังคงต้องเรียกใช้ฟังก์ชัน UIApplication: setApplicationIconBadgeNumber เพื่อตั้งค่าไอคอนที่แสดงบน badge
- ค่าส่งกลับ
- ส่งกลับ TRUE ภายในช่วงของ value มิฉะนั้นส่งกลับ FALSE
ตั้งค่า Badge (พร้อมผลลัพธ์การเรียกกลับ)
เวอร์ชันที่รองรับ: v5.2.0
นิยามอินเทอร์เฟซ
+ (void)setBadge:(NSInteger)value completion:(void (^)(NSError *error))completion
คำอธิบายพารามิเตอร์
- value ช่วงค่า: [0,99999]
- completion ผลลัพธ์การเรียกกลับ error จะเป็น null เมื่อสำเร็จ
คุณยังคงต้องเรียกใช้ฟังก์ชัน UIApplication:setApplicationIconBadgeNumber ในเครื่องเพื่อตั้งค่าค่า badge ที่แสดงบนไอคอน
ล้าง badge
ล้างค่า badge ที่เก็บไว้ในเซิร์ฟเวอร์ MTPush นั่นคือ [setBadge:0]
นิยามอินเทอร์เฟซ
+ (void)resetBadge
การแจ้งเตือนท้องถิ่น
คำอธิบายฟังก์ชัน
อุปกรณ์ iOS รับการแจ้งเตือนท้องถิ่น เมื่อผู้ใช้คลิกการแจ้งเตือนเพื่อเปิดแอป แอปจะจัดการสถานการณ์ตามสถานะที่แตกต่างกัน จำเป็นต้องเพิ่มโค้ดในเมธอดต่อไปนี้ใน AppDelegate เพื่อรับเนื้อหาการแจ้งเตือนท้องถิ่น:
- หากสถานะของแอปไม่ได้ทำงานอยู่ เมธอดนี้จะถูกเรียก หาก launchOptions รวม UIApplicationLaunchOptionsLocalNotificationKey หมายความว่าแอปถูกเปิดโดยผู้ใช้คลิกการแจ้งเตือนท้องถิ่น หากไม่มีคีย์ที่เกี่ยวข้อง หมายความว่าแอปไม่ได้เริ่มต้นโดยการคลิกการแจ้งเตือนท้องถิ่น แต่อาจเริ่มต้นโดยการคลิกไอคอนโดยตรงหรืออื่นๆ
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;
// รับเนื้อหาการแจ้งเตือนท้องถิ่น:NSDictionary *localNotification = [launchOptions objectForKey: UIApplicationLaunchOptionsLocalNotificationKey]
- เมธอดนี้จะถูกเรียกหากสถานะของแอปอยู่ที่หน้าหลักหรือพื้นหลังทำงาน และคุณสามารถตรวจสอบว่า applicationState ของ AppDelegate เป็น UIApplicationStateActive หรือไม่ กรณีดังกล่าวจะถูกจัดการในเมธอดนี้:
// NS_DEPRECATED_IOS(4_0, 10_0, "Use UserNotifications Framework's -[UNUserNotificationCenterDelegate willPresentNotification:withCompletionHandler:] or -[UNUserNotificationCenterDelegate didReceiveNotificationResponse:withCompletionHandler:]")
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification;
//การแจ้งเตือนท้องถิ่นคือ notification
- เมธอดด้านบนจะถูกยกเลิกใน iOS 10 และใหม่กว่า โดยใช้ UserNotifications Framework ใหม่ของ - [UNUserNotificationCenterDelegate willPresentNotification: withCompletionHandler:] หรือ - [UNUserNotificationCenterDelegate didReceiveNotificationResponse: withCompletionHandler:] เพื่อแทนที่ เพื่อจุดประสงค์นี้ SDK ได้ห่อหุ้มโปรโตคอล MTPushRegisterDelegate ซึ่งสามารถปรับให้เข้ากับเมธอด delegate ที่เพิ่มใหม่ใน iOS 10 โดยเพียงใช้เมธอดโปรโตคอลที่เกี่ยวข้อง ซึ่งสอดคล้องกับเมธอด callback การพุชระยะไกลด้านบน นั่นคือเมธอดต่อไปนี้:
- (void)mtpNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^) (NSInteger))completionHandler;
// if (![notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) {
// การแจ้งเตือนท้องถิ่นคือ notification
// }
- (void)mtpNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler: (void (^)())completionHandler;
// if (![response.notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) {
// การแจ้งเตือนท้องถิ่นคือ notification
// }
ลงทะเบียน/อัปเดตการแจ้งเตือนท้องถิ่น
คำอธิบายฟังก์ชัน
API นี้ใช้สำหรับการลงทะเบียนหรืออัปเดตการพุช (รองรับ iOS 10 และเข้ากันได้กับ iOS 10 และต่ำกว่า)
นิยามอินเทอร์เฟซ
+ (void)addNotification:(MTPushNotificationRequest *)request;
คำอธิบายพารามิเตอร์
- Request [MTPushNotificationRequest] ประเภทเอนทิตี สามารถแนะนำคุณสมบัติการพุชได้
คำอธิบายการรับ
ใส่ request.requestIdentifier ใน request เป็นพารามิเตอร์เพื่ออัปเดตการพุชที่มีอยู่แล้ว มิฉะนั้นจะลงทะเบียนเป็นการพุชใหม่
ตัวอย่างโค้ด
- (void)testAddNotification {
MTPushNotificationContent *content = [[MTPushNotificationContent alloc] init];
content.title = @"Test Notifications";
content.subtitle = @"2016";
content.body = @"This is a test code";
content.badge = @1;
content.categoryIdentifier = @"Custom Category Name";
// Alert iOS 10 or later after 5s
MTPushNotificationTrigger *trigger1 = [[MTPushNotificationTrigger alloc] init];
trigger1.timeInterval = 5;
//Repeat iOS 10 + support once per hour
MTPushNotificationTrigger *trigger2 = [[MTPushNotificationTrigger alloc] init];
trigger2.timeInterval = 3600;
trigger2.repeat = YES;
//Alert every Monday at 8:00 AM, iOS 10 and above support
NSDateComponents *components = [[NSDateComponents alloc] init];
components.weekday = 2;
components.hour = 8;
MTPushNotificationTrigger *trigger3 = [[MTPushNotificationTrigger alloc] init];
trigger3.dateComponents = components;
trigger3.repeat = YES;
//#import <CoreLocation/CoreLocation.h>
//Alert when you arrive at a location, iOS 8 and above support
CLLocationCoordinate2D cen = CLLocationCoordinate2DMake(37.335400, -122.009201);
CLCircularRegion *region = [[CLCircularRegion alloc] initWithCenter:cen
radius:2000.0
identifier:@"engagelab"];
MTPushNotificationTrigger *trigger4 = [[MTPushNotificationTrigger alloc] init];
trigger4.region = region;
//Alert after 5s, support below iOS 10
MTPushNotificationTrigger *trigger5 = [[MTPushNotificationTrigger alloc] init];
trigger5.fireDate = [NSDate dateWithTimeIntervalSinceNow:5];
MTPushNotificationRequest *request = [[MTPushNotificationRequest alloc] init];
request.requestIdentifier = @"sampleRequest";
request.content = content;
request.trigger = trigger1;//trigger2;//trigger3;//trigger4;//trigger5;
request.completionHandler = ^(id result) {
NSLog(@"Results back:%@", result);
};
[MTPushService addNotification:request];
}
ลบการแจ้งเตือนท้องถิ่น
คำอธิบายฟังก์ชัน
API นี้ใช้เพื่อลบการแจ้งเตือนที่พร้อมจะถูกพุชหรือแสดงอยู่ในศูนย์การแจ้งเตือน (รองรับ iOS 10 และเข้ากันได้กับเวอร์ชันที่ใหม่กว่า iOS 10)
นิยามอินเทอร์เฟซ
+ (void)removeNotification:(MTPushNotificationIdentifier *)identifier;
คำอธิบายพารามิเตอร์
- Identifier ประเภทเอนทิตี MTPushNotificationIdentifier
คำอธิบายการรับ
- ด้วย identifier ที่ตั้งค่าเป็น nil เหนือ iOS 10 การพุชทั้งหมดและการร้องขอพุชในศูนย์การแจ้งเตือนจะถูกลบ คุณยังสามารถลบการพุชหรือคำขอที่จะพุชที่เกี่ยวข้องจากศูนย์การแจ้งเตือนได้โดยการตั้งค่า identifiers.delivered และ identifiers.identifiers identifiers หากตั้งค่าเป็น nil หรืออาร์เรย์ว่างจะลบการพุชหรือคำขอที่จะพุชทั้งหมดที่แสดงอยู่ในศูนย์การแจ้งเตือนภายใต้ธงที่เกี่ยวข้อง
- iOS ต่ำกว่า 10 identifier ถูกตั้งค่าเป็น nil จากนั้นลบการพุชทั้งหมด identifier. Delivered คุณสมบัติไม่ทำงาน อื่น ๆ สามารถทำได้โดย identifier. NotificationObj เป็นวัตถุพุชเฉพาะเพื่อลบการพุชนี้
ตัวอย่างโค้ด
- (void)testRemoveNotification {
MTPushNotificationIdentifier *identifier = [[MTPushNotificationIdentifier alloc] init];
identifier.identifiers = @[@"sampleRequest"];
identifier.delivered = YES; //หากเท่ากับ YES จะถูกลบในการแสดงศูนย์การแจ้งเตือน หากเท่ากับ NO จะถูกลบในศูนย์การแจ้งเตือนที่จะพุช ไม่ทำงานสำหรับ iOS10 หรือต่ำกว่า
[MTPushService removeNotification:identifier];
}
- (void)testRemoveAllNotification {
[MTPushService removeNotification:nil]; // ลบการพุชทั้งหมดจาก iOS 10 และต่ำกว่า iOS 10 หรือใหม่กว่าลบการพุชทั้งหมดและคำขอที่จะพุชที่แสดงอยู่ในศูนย์การแจ้งเตือน
// //Support for iOS 10 and above
// MTPushNotificationIdentifier *identifier = [[MTPushNotificationIdentifier alloc] init];
// identifier.identifiers = nil;
// identifier.delivered = YES; //If it is equal to YES, it removes all that is displayed in the notification center, and if it is equal to NO, it removes all that is waiting to be pushed. Invalid for iOS 10 or below
// [MTPushService removeNotification:identifier];
}
ค้นหาการแจ้งเตือนท้องถิ่น
คำอธิบายฟังก์ชัน
API นี้ใช้เพื่อค้นหาการพุช (รองรับ iOS 10 และเข้ากันได้กับ iOS 10 หรือใหม่กว่า)
นิยามอินเทอร์เฟซ
+ (void)findNotification:(MTPushNotificationIdentifier *)identifier;
คำอธิบายพารามิเตอร์
- identifier [MTPushNotificationIdentifier]ประเภทเอนทิตี
คำอธิบายการรับ
- สำหรับ iOS 10 และใหม่กว่า คุณสามารถตั้งค่า identifiers.delivered และ identifiers เพื่อค้นหาการพุชหรือคำขอที่จะพุชที่เกี่ยวข้องที่แสดงอยู่ในศูนย์การแจ้งเตือน หากตั้งค่า identifiers เป็น nil หรืออาร์เรย์ว่างจะส่งกลับคำขอทั้งหมดเพื่อแสดงการพุชหรือที่จะพุชในศูนย์การแจ้งเตือนภายใต้ธงที่เกี่ยวข้อง ด้านล่าง identifiers คุณสมบัติใน iOS 10 ไม่ทำงาน delivered.identifiers ส่งกลับการพุชทั้งหมดที่ยังไม่ถูกเรียกหากตั้งค่าเป็น nil หรืออาร์เรย์ว่าง
- คุณต้องตั้งค่า identifier.FindCompletionHandler callback เพื่อรับผลการค้นหา ผ่าน (NSArray * results) ส่งกลับอาร์เรย์ของวัตถุที่เกี่ยวข้อง
ตัวอย่างโค้ด
- (void)testFindNotification {
MTPushNotificationIdentifier *identifier = [[MTPushNotificationIdentifier alloc] init];
identifier.identifiers = @[@"sampleRequest"];
identifier.delivered = YES; //หากเท่ากับ YES จะค้นหาในศูนย์การแจ้งเตือนแสดง หากเท่ากับ NO จะค้นหาในศูนย์การแจ้งเตือนที่จะพุช ไม่ทำงานภายใต้ iOS10
identifier.findCompletionHandler = ^(NSArray *results) {
NSLog(@"The return result is:%@", results); // สำหรับ iOS10 และใหม่กว่า ส่งกลับอาร์เรย์ของวัตถุ UILocalNotification สำหรับ iOS10 และใหม่กว่า ส่งกลับอาร์เรย์ของวัตถุ UNNotification หรือ UNNotificationRequest ตามค่าที่ส่ง
};
[MTPushService findNotification:identifier];
}
- (void)testFindAllNotification {
MTPushNotificationIdentifier *identifier = [[MTPushNotificationIdentifier alloc] init];
identifier.identifiers = nil;
identifier.delivered = YES; //iOS 10 หรือใหม่กว่าถูกต้อง หาก YES ใช้เพื่อค้นหาทั้งหมดที่แสดงในศูนย์การแจ้งเตือน และหาก NO ใช้เพื่อค้นหาทั้งหมดที่รอพุช ไม่ทำงานสำหรับ iOS 10 หรือต่ำกว่า
identifier.findCompletionHandler = ^(NSArray *results) {
NSLog(@"The return result is:%@", results); // สำหรับ iOS 10 และใหม่กว่า ส่งกลับอาร์เรย์ของวัตถุ UILocalNotification สำหรับ iOS 10 และใหม่กว่า ส่งกลับอาร์เรย์ของวัตถุ UNNotification หรือ UNNotificationRequest ตามค่าที่ส่ง
};
[MTPushService findNotification:identifier];
}
ตั้งค่าระดับบันทึก
เปิดใช้งานโหมดดีบัก
คำอธิบายฟังก์ชัน
API นี้ใช้เพื่อเปิดใช้งานโหมด Debug เพื่อแสดงข้อมูลบันทึกเพิ่มเติม
นิยามอินเทอร์เฟซ
+ (void)setDebugMode;
คำอธิบายการรับ
เมื่อคุณต้องการข้อมูลการดีบักเพิ่มเติม ให้เรียก API นี้เพื่อเปิดใช้งานโหมด Debug
ตัวอย่างโค้ด
[MTPushService setDebugMode];
ปิดใช้งานข้อมูลบันทึก
คำอธิบายฟังก์ชัน
API นี้ใช้เพื่อปิดการใช้งานข้อความบันทึก (ยกเว้นข้อความข้อผิดพลาดที่จำเป็น)
นิยามอินเทอร์เฟซ
+ (void)setLogOFF;
คำอธิบายการรับ
เรียก API นี้เมื่อคุณไม่ต้องการข้อมูลการดีบักใด ๆ (แนะนำให้เรียก API นี้เมื่อเผยแพร่เพื่อปกปิดข้อมูลบันทึกและประหยัดประสิทธิภาพ)
ตัวอย่างโค้ด
[MTPushService setLogOFF];
ตั้งค่าหมายเลขโทรศัพท์มือถือ
คำอธิบายฟังก์ชัน
ใช้เพื่อเสริมข้อความ SMS หลังจากที่คุณตั้งค่าหมายเลขโทรศัพท์มือถือ คุณสามารถเปิดใช้งานโหมดการแจ้งเตือน "ไม่สามารถพุช SMS" และปรับปรุงอัตราการส่งพุชให้สำเร็จ หลังจากตั้งค่าหมายเลขโทรศัพท์มือถือแล้ว จะส่งข้อความ SMS ไปยังอุปกรณ์เป็นส่วนเสริมเมื่อไม่สามารถส่งข้อความปกติได้ และสามารถปรับปรุงอัตราความสำเร็จในการส่งพุช
นิยามอินเทอร์เฟซ
+ (void)setMobileNumber:(NSString *)mobileNumber completion:(void (^)(NSError *error))completion
คำอธิบายพารามิเตอร์
- mobileNumber หมายเลขโทรศัพท์มือถือ ค่าสามารถเริ่มต้นด้วย (+) หรือตัวเลขเท่านั้น ค่าสามารถมีเครื่องหมายขีด (-) และตัวเลขเท่านั้น และต้องไม่เกิน 20 อักขระ หากส่ง nil หรือสตริงว่าง หมายเลขจะไม่ถูกผูก
- completion ตอบสนองต่อ callback ในกรณีที่สำเร็จ error เป็น null ในกรณีที่ล้มเหลว error จะมีรหัสข้อผิดพลาดและข้อมูลข้อผิดพลาด สำหรับรายละเอียดเกี่ยวกับรหัสข้อผิดพลาด โปรดดูคำจำกัดความของรหัสข้อผิดพลาด
คำอธิบายการรับ
อินเทอร์เฟซนี้สามารถเรียกใช้ได้สูงสุด 3 ครั้งภายใน 10 วินาที แนะนำให้เรียกอินเทอร์เฟซนี้หลังจากเข้าสู่ระบบสำเร็จ ข้อมูลผลลัพธ์จะถูกส่งกลับแบบอะซิงโครนัสผ่าน completion หรือคุณสามารถตั้งค่า completion เป็น nil และไม่ประมวลผลข้อมูลผลลัพธ์
ตัวอย่างโค้ด
[MTPushService setMobileNumber:@"xxx" completion:^(NSError *error) {
if (error) {
NSLog(@"error:%@", error);
}
else {
// success
}
}];
รายงานข้อมูลภาษา
คำอธิบายฟังก์ชัน
API ใช้เพื่อรายงานข้อมูลภาษาของผู้ใช้
นิยามอินเทอร์เฟซ
+ (void)setUserLanguage:(NSString *)language completionHandler:(void(^)(int resCode, NSError *error))handler;
คำอธิบายพารามิเตอร์
- language:ข้อมูลภาษา
- handler:รายงานไปยัง callback
คำอธิบายการรับ
แนะนำให้เรียกอินเทอร์เฟซนี้หลังจากเข้าสู่ระบบสำเร็จ
ตัวอย่างโค้ด
[MTPushService setUserLanguage:@"zh_Hans" completionHandler:^(int resCode, NSError *error) {
NSLog(@"language report: %d, %@", resCode, error);
}];
ตั้งค่าโหมดการเข้ารหัส TCP
เวอร์ชันที่ใช้งานได้
Notification Service Extension SDK เวอร์ชัน v3.0.0 และใหม่กว่า
คำอธิบายคุณลักษณะ
API นี้ใช้เพื่อตั้งค่าการใช้การเชื่อมต่อ TCP ที่เข้ารหัสหรือไม่
นิยามอินเทอร์เฟซ
- (void)setTcpSSL:(BOOL)isSSL;
คำอธิบายพารามิเตอร์
- isSSL: YES สำหรับการเข้ารหัส
- NO สำหรับไม่มีการเข้ารหัส
คำแนะนำการเรียกใช้
โปรดเรียกใช้เมธอดนี้ก่อนอินเทอร์เฟซการเริ่มต้น
ตัวอย่างโค้ด
[MTPushService setTcpSSL:YES];
คุณลักษณะการออกเสียง
คำแนะนำคุณลักษณะ
หากต้องการใช้คุณลักษณะนี้ คุณต้องเปิดใช้งาน appGroups สำหรับ bundleid ของคุณ สำหรับขั้นตอนการเปิดใช้งาน appGroups โปรดดู "คู่มือการตั้งค่าใบรับรอง iOS"
คุณลักษณะนี้รองรับ iOS 14 และใหม่กว่า
เนื่องจากข้อจำกัดของระบบ ระยะเวลาของการออกเสียงและเวลาการแสดงผลของป๊อปอัปการแจ้งเตือนบนมือถือจะใกล้เคียงกัน (ประมาณ 10 วินาที แม้ว่าอาจมีความแตกต่างเล็กน้อยระหว่างระบบ) การออกเสียงจะหยุดเมื่อป๊อปอัปการแจ้งเตือนหายไป ดังนั้นโปรดระวังระยะเวลาของการออกเสียง
การตั้งค่า appGroupId
เวอร์ชันที่รองรับ
รองรับตั้งแต่เวอร์ชัน: v4.3.4
คำแนะนำการเรียกใช้
ใช้เพื่อตั้งค่า appGroupId ซึ่งต้องตรงกับ appGroupId ที่ตั้งค่าในส่วนขยายบริการการแจ้งเตือนผ่านเมธอด mtpushSetAppGroupId: ใช้เพื่อกำหนดพื้นที่เก็บข้อมูลที่แชร์ระหว่างโครงการหลักและส่วนขยายบริการการแจ้งเตือน ซึ่งจะเก็บทรัพยากรที่เกี่ยวข้องกับการออกเสียง
นิยามอินเทอร์เฟซ
+ (void)setAppGroupId:(NSString *)appGroupId;
คำอธิบายพารามิเตอร์
- appGroupId: appGroupId ที่คุณกรอกเมื่อเปิดใช้งานความสามารถ appGroupId สำหรับ bundleid ของคุณ
คำแนะนำการเรียกใช้
โปรดเรียกใช้สิ่งนี้ก่อนอินเทอร์เฟซการเริ่มต้น
ตัวอย่างโค้ด
[MTPushService setAppGroupId:@"Your appGroupId"];
การตั้งค่าการเปิดใช้งานการออกเสียง
เวอร์ชันที่รองรับ
รองรับตั้งแต่เวอร์ชัน: v4.3.4
คำอธิบายคุณลักษณะ
เพื่อเปิดหรือปิดคุณลักษณะการออกเสียง
นิยามอินเทอร์เฟซ
+ (void)enablePushTextToSpeech:(BOOL)enable;
คำอธิบายพารามิเตอร์
- enable: YES เพื่อเปิดใช้งาน NO เพื่อปิดใช้งาน ค่าเริ่มต้นคือ NO
คำแนะนำการเรียกใช้
โปรดเรียกใช้สิ่งนี้ก่อนอินเทอร์เฟซการเริ่มต้น โดยค่าเริ่มต้นจะปิดใช้งาน
ตัวอย่างโค้ด
[MTPushService enablePushTextToSpeech:YES];
ตั้งค่าการรีเซ็ต RegistrationID เมื่อเปลี่ยนอุปกรณ์
เวอร์ชันที่รองรับ
รองรับตั้งแต่เวอร์ชัน: v5.1.0
คำอธิบายคุณลักษณะ
เปิดหรือปิดคุณลักษณะการรีเซ็ต RegistrationID เมื่ออุปกรณ์ถูกเปลี่ยน หากเปิดใช้งาน เมื่อตรวจพบการเปลี่ยนแปลงอุปกรณ์ (เฉพาะเมื่อรุ่นอุปกรณ์เปลี่ยน) ข้อมูลการลงทะเบียนจะถูกล้างและลงทะเบียนใหม่โดยอัตโนมัติ
นิยามอินเทอร์เฟซ
+ (void)enableResetOnDeviceChange:(BOOL)enable;
คำอธิบายพารามิเตอร์
- enable: YES: เปิดใช้งาน NO: ปิดใช้งาน ค่าเริ่มต้นคือ NO
คำแนะนำการใช้งาน
โปรดเรียกใช้เมธอดนี้ก่อนอินเทอร์เฟซการเริ่มต้น ค่าเริ่มต้นคือปิดใช้งาน
ตัวอย่างโค้ด
[MTPushService enableResetOnDeviceChange:YES];
LiveActivity
รายงาน pushToStartToken ของ LiveActivity
เมธอด - registerLiveActivity:pushToStartToken:completion:seq:
เรียกใช้ API นี้เพื่อรายงาน pushToStartToken ของ liveActivity และส่งกลับผลลัพธ์ในบล็อก
เวอร์ชันที่รองรับ
รองรับตั้งแต่เวอร์ชัน: 4.4.0
นิยามอินเทอร์เฟซ
+ (void)registerLiveActivity:(NSString *)activityAttributes
pushToStartToken:(NSData *)pushToStartToken
completion:(MTPLiveActivityTokenCompletion)completion
seq:(NSInteger)seq;
คำอธิบายพารามิเตอร์
activityAttributes
- ประเภทแอตทริบิวต์ที่กำหนดโดย liveActivity
pushToStartToken
- pushToStartToken ที่สอดคล้องกับ liveactivity
completion
- ใช้เพื่อส่งกลับรหัสสถานะที่เกี่ยวข้อง: 0 หมายถึงสำเร็จ โปรดดูคำจำกัดความรหัสข้อผิดพลาดสำหรับรหัสส่งกลับอื่น ๆ seq คือหมายเลขลำดับเซสชันที่ส่งผ่านเมื่อเรียก
seq
- หมายเลขลำดับที่ส่งผ่านระหว่างการร้องขอจะถูกส่งกลับตามเดิมเมื่อมีการเรียกกลับ
การเรียกกลับการรายงาน pushToStartToken ของ LiveActivity (Block)
typedef void (^MTPUSHLiveActivityTokenCompletion)(NSInteger iResCode, NSString *liveActivityId, NSData *token, NSInteger seq);
รายงาน PushToken ของ LiveActivity (อัปเดตโทเค็น)
เมธอด - registerLiveActivity:pushToken:completion:seq:
เรียกใช้ API นี้เพื่อรายงาน PushToken ของ liveActivity และส่งกลับผลลัพธ์ในบล็อก
เวอร์ชันที่รองรับ
รองรับตั้งแต่เวอร์ชัน: 4.4.0
นิยามอินเทอร์เฟซ
+ (void)registerLiveActivity:(NSString *)liveActivityId
pushToken:(NSData *)pushToken
completion:(MTPLiveActivityTokenCompletion)completion
seq:(NSInteger)seq;
คำอธิบายพารามิเตอร์
liveActivityId
- liveActivityId สูงสุด 24 ไบต์
- รหัสธุรกิจ กำหนดโดยนักพัฒนาสามารถเชื่อมโยง pushTokens ของ liveActivity หลายรายการ EngageLab กำหนด liveActivity เป้าหมายที่ต้องอัปเดตผ่าน liveActivityId นี้ ประเภทนี้ต้องเป็น NSString
เมื่อ pushToken ของ liveActivity เปลี่ยนแปลง โปรดเรียกอินเทอร์เฟซนี้ทันทีเพื่อรายงาน
pushToken
- pushToken ที่สอดคล้องกับ liveactivity
completion
- ใช้เพื่อส่งกลับรหัสสถานะที่เกี่ยวข้อง: 0 หมายถึงสำเร็จ โปรดดูคำจำกัดความรหัสข้อผิดพลาดสำหรับรหัสส่งกลับอื่น ๆ seq คือหมายเลขลำดับเซสชันที่ส่งผ่านเมื่อเรียก
seq
- หมายเลขลำดับที่ส่งผ่านระหว่างการร้องขอจะถูกส่งกลับตามเดิมเมื่อมีการเรียกกลับ
การเรียกกลับการรายงาน PushToken ของ LiveActivity (Block)
typedef void (^MTPUSHLiveActivityTokenCompletion)(NSInteger iResCode, NSString *liveActivityId, NSData *token, NSInteger seq);
การแจ้งเตือนแบบพุช VoIP
คำอธิบายฟังก์ชัน
แนะนำใน iOS 8 การแจ้งเตือนแบบพุช VoIP ใช้เฟรมเวิร์ก PushKit ซึ่งช่วยให้แอปสามารถตื่นขึ้นและรันโค้ดได้แม้เมื่อผู้ใช้ปิดแอป หมายเหตุ: ตั้งแต่ iOS 13 เป็นต้นไป Apple ไม่อนุญาตให้ใช้ PushKit สำหรับสถานการณ์ที่ไม่ใช่การโทร VoIP และคุณต้องใช้ PushKit คุณต้องรวมอินเทอร์เฟซ CallKit
เวอร์ชันที่รองรับ
เวอร์ชันที่รองรับ: v4.4.0
ลงทะเบียน
registerVoipToken: ส่งโทเค็น VoIP ไปยังเซิร์ฟเวอร์ EngageLab
นิยามเมธอด
+ (void)registerVoipToken:(NSData *)voipToken;
คำอธิบายพารามิเตอร์
- voipToken: โทเค็น VoIP ที่ส่งกลับโดยระบบ
จัดการข้อความ VoIP
handleVoipNotification: จัดการข้อความ VoIP ที่ได้รับ ใช้สำหรับสถิติการส่งข้อความ VoIP
นิยามเมธอด
+ (void)handleVoipNotification:(NSDictionary *)remoteInfo;
คำอธิบายพารามิเตอร์
- remoteInfo: เนื้อหาของข้อความที่ได้รับ
ล็อกเอาท์โทเค็น Voip
unregisterVoipToken:
ล็อกเอาท์โทเค็น Voip ไปยังเซิร์ฟเวอร์ EngageLab และไม่สามารถส่งข้อความ Voip ได้หลังจากนั้น
นิยามอินเทอร์เฟซ
+ (void)unregisterVoipToken:(MTPushVoipTokenCompletion)completion;
บล็อก Voip
typedef void (^MTPushVoipTokenCompletion)(NSInteger iResCode, NSString *msg);
การแจ้งเตือนแบบพุช VoIP
คำอธิบายฟังก์ชัน
แนะนำใน iOS 8 การแจ้งเตือนแบบพุช VoIP ใช้เฟรมเวิร์ก PushKit ซึ่งช่วยให้แอปสามารถตื่นขึ้นและรันโค้ดได้แม้เมื่อผู้ใช้ปิดแอป คำเตือน: ตั้งแต่ iOS 13 เป็นต้นไป Apple ไม่อนุญาตให้ใช้แอปพลิเคชัน PushKit สำหรับสถานการณ์ที่ไม่ใช่การโทร VoIP หากคุณต้องการใช้ PushKit คุณต้องรวมอินเทอร์เฟซ CallKit
เวอร์ชันที่รองรับ
เวอร์ชันที่รองรับ: v4.4.0
ลงทะเบียนโทเค็น
registerVoipToken: ส่งโทเค็น VoIP ที่ส่งกลับโดยระบบไปยังเซิร์ฟเวอร์ EngageLab
นิยามเมธอด
+ (void)registerVoipToken:(NSData *)voipToken;
คำอธิบายพารามิเตอร์
- voipToken: โทเค็น VoIP ที่ส่งกลับโดยระบบ
จัดการข้อความ VoIP
handleVoipNotification: ประมวลผลข้อความ VoIP ที่ได้รับ ใช้สำหรับตรวจสอบการส่งข้อความ VoIP
นิยามเมธอด
+ (void)handleVoipNotification:(NSDictionary *)remoteInfo;
คำอธิบายพารามิเตอร์
- remoteInfo: เนื้อหาของข้อความที่ได้รับ
ส่วนขยายบริการการแจ้งเตือน
เวอร์ชันที่รองรับ
ส่วนขยายบริการการแจ้งเตือน SDK เวอร์ชัน v3.0.0 หรือใหม่กว่า
คำอธิบายฟังก์ชัน
ส่วนขยายบริการการแจ้งเตือน SDK จะใช้สำหรับรายงานข้อมูลการมาถึงของการพุช
ตัวอย่างการตั้งค่าอินเทอร์เฟซ appkey
เพื่อตั้งค่าอินเทอร์เฟซ appkey ต้องเรียกใช้ล่วงหน้า
นิยามอินเทอร์เฟซ
+ (void)mtpushSetAppkey:(NSString *)appkey
คำอธิบายพารามิเตอร์
- appkey ควรเหมือนกับ appkey ของ MTPush SDK ในแอปหลัก
สถิติการแสดงข้อความ
ข้อความถูกส่งไปยังอินเทอร์เฟซสถิติ ซึ่งถูกเรียกเพื่อรายงานข้อมูล MTPush ในเนื้อหาข้อความ APNs
นิยามอินเทอร์เฟซ
+ (void)mtpushReceiveNotificationRequest:(UNNotificationRequest *)request with:(void (^)(void))completion
คำอธิบายพารามิเตอร์
- request UNNotificationRequest
- ดำเนินการ เช่น แสดง APNs บน completion callback การรายงานข้อความที่ส่ง
ปิดบันทึก
เปิดใช้งานโดยค่าเริ่มต้น แนะนำให้ปิดเมื่อเผยแพร่เพื่อลด I/O ที่ไม่จำเป็น
นิยามอินเทอร์เฟซ
+ (void)setLogOff
คุณลักษณะการออกเสียง
คุณลักษณะนี้รองรับ iOS 14 และใหม่กว่า
เวอร์ชันที่รองรับ
รองรับตั้งแต่เวอร์ชัน: v4.3.4
การตั้งค่า appGroupId
+ (void)mtpushSetAppGroupId:(NSString *)appGroupId;
คำอธิบายพารามิเตอร์
- appGroupId: ต้องเหมือนกับค่า appGroupId ที่ตั้งค่าในแอปหลักผ่านเมธอด + (void)setAppGroupId:(NSString *)appGroupId;
การจัดการการแจ้งเตือนด้วยเสียง
อินเทอร์เฟซสำหรับรายงานสถิติการส่งข้อความ การเรียกอินเทอร์เฟซนี้จะรายงานข้อมูลที่เกี่ยวข้องกับ MTPush ในเนื้อหาข้อความ APNs
นิยามอินเทอร์เฟซ
+ (void)handleVoice:(UNNotificationRequest *)request with:(void (^)(NSString *soundName))completion;
คำอธิบายพารามิเตอร์
- request: UNNotificationRequest
- completion: การเรียกกลับหลังจากประมวลผลการแจ้งเตือนด้วยเสียงเสร็จสิ้น เมื่อประมวลผลสำเร็จจะส่งกลับชื่อเสียงที่ประมวลผลแล้ว
soundName
ซึ่งควรแทนที่ค่าของUNNotificationRequest.content.sound
ตัวอย่างการเรียกใช้
- (void)didReceiveNotificationRequest:(UNNotificationRequest *)request withContentHandler:(void (^)(UNNotificationContent * _Nonnull))contentHandler {
UNMutableNotificationContent *bestAttemptContent = [request.content mutableCopy];
[MTNotificationExtensionService mtpushSetAppGroupId:@"xxx"];
[MTNotificationExtensionService setSiteName:@"Your siteName"]; //เวอร์ชัน 4.3.5 และใหม่กว่าไม่จำเป็นต้องตั้งค่าศูนย์ข้อมูลด้วยตนเอง
[MTNotificationExtensionService mtpushSetAppkey:@"Your appkey"];
// การจัดการไฟล์เสียง
[MTNotificationExtensionService handleVoice:request with:^(NSString *soundName) {
if (soundName && soundName.length >= 0 ) {
// หลังจากประมวลผลไฟล์เสียงสำเร็จ ตั้งค่าเสียงของการแจ้งเตือนเป็นชื่อไฟล์เสียงที่ประมวลผลแล้ว
bestAttemptContent.sound = [UNNotificationSound soundNamed:soundName];
}
// เรียก API การรายงานสถิติการพุชต่อไป
[MTNotificationExtensionService mtpushReceiveNotificationRequest:request with:^ {
NSLog(@"apns upload success");
self.contentHandler(bestAttemptContent);
}];
}];
}