ข้ามไปที่เนื้อหา

ขั้นสูง

สร้างกลุ่มการแจ้งเตือน

คุณสามารถจัดกลุ่มการแจ้งเตือนที่แสดงในศูนย์การแจ้งเตือน การแจ้งเตือนจากเหตุการณ์เดียวกันสามารถจัดกลุ่มและยุบได้ กลุ่มการแจ้งเตือนที่ยุบแล้วสามารถขยายได้อีกครั้งโดยผู้ใช้ และสมาชิกแต่ละคนในกลุ่มการแจ้งเตือนสามารถเข้าถึงได้เป็นรายบุคคล

กลุ่มการแจ้งเตือนสามารถสร้างได้ใน the Hive Console > Notification > Register Push Campaign > Campaign Register > Option > Group Key เปลี่ยน Group Key เป็น Use และเพิ่มค่ากุญแจกลุ่ม หลังจากสร้างกลุ่มใน Hive Console แล้ว คุณสามารถใช้กลุ่มการแจ้งเตือนด้วย groupId เมื่อคุณส่ง การแจ้งเตือนแบบท้องถิ่น หรือการแจ้งเตือนระยะไกล หากกลุ่มการแจ้งเตือนถูกนำไปใช้ การแจ้งเตือนจะแสดงอยู่ในรูปแบบที่ยุบโดยกลุ่ม ดังที่แสดงด้านล่าง

Android
iOS

การแจ้งเตือนขั้นสูง iOS 10

เมื่อ Apple เพิ่ม UserNotifications.framework ใน iOS 10 คุณสามารถแนบภาพหรือคลิปวิดีโอกับกรอบงานนี้ในข้อความแจ้งเตือน

JPG (ภาพ)
GIF (ภาพ)
MP4 (คลิปวิดีโอ)

ข้อกำหนดของระบบ

  • ต้องการ Xcode 8.0 และ MacOS เวอร์ชันที่มีอยู่ และอุปกรณ์ที่สามารถติดตั้ง iOS 10 ได้
  • ใน OS ที่มีเวอร์ชันต่ำกว่า แม้จะมีการใช้ Extension ก็ยังได้รับการแจ้งเตือนเดียวกัน

  • iOS 10 รองรับอุปกรณ์

Note

iOS 10.1 และต่ำกว่าอาจมีปัญหาในการเรียกใช้งาน Extension กับสื่อเนื่องจากระบบปฏิบัติการที่มีข้อบกพร่อง หากเป็นเช่นนั้น ให้ตั้งค่า Deployment Target ของ Extension เป็น 10.2 และดำเนินการสำหรับระบบปฏิบัติการที่มีเวอร์ชัน 10.1 และต่ำกว่าเพื่อรับประเภทการแจ้งเตือนทั่วไป.

การดำเนินการ

ฟังก์ชันนี้ทำงานโดยใช้ Notification Service Extension ("Extension") ของ iOS.

บริการขยายการแจ้งเตือนเป็นหนึ่งในส่วนขยายแอปที่ช่วยให้คุณสามารถแก้ไข Payload ก่อนที่การแจ้งเตือนระยะไกลจะถูกส่งถึงผู้ใช้ มันเป็นเทคโนโลยีที่สามารถใช้กระบวนการของแอปอื่น ๆ (UI หรือฟังก์ชัน) โดยไม่เปลี่ยนบริบท

สำหรับข้อมูลเพิ่มเติม โปรดดูที่ เพิ่มเติม.

  • กระบวนการส่งการแจ้งเตือนระยะไกลที่ใช้ Extension

ขีดจำกัดความจุและประเภทไฟล์

ความจุถูกจำกัดในการแนบไฟล์มีเดีย สำหรับข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้ โปรดดูที่ UNNotificationAttachment.

Warning

หากผู้ใช้ส่งเสียงที่ส่งโดยบริการพุชในขณะที่ Youtube หรือเกมมือถือประเภทต่างๆ (เช่น Summoners War, Dragon Blaze, Chain Strike) ที่ใช้ AVAudioSession กำลังทำงานอยู่ หน้าจอหลัก (Springboard) จะรีบูตเกิดขึ้น ไม่ว่าจะเป็นเวอร์ชัน iOS ประเภทอุปกรณ์และ Hive SDK แสดงให้เห็นว่าระบบภายในของ Apple ล่ม
ได้มีการร้องขอข้อผิดพลาดนี้ไปยัง Apple เมื่อวันที่ 20 ธันวาคม 2018 ดังนั้น โปรดมั่นใจว่า หยุดการใช้ฟังก์ชันการส่งเสียงผ่านการแจ้งเตือนสื่อ .

ประเภท รูปแบบ ความจุ
เสียง WAV, MP3, MP4(เสียง) 5MB
ภาพ JPG, JPEG, PNG, GIF 10MB
วิดีโอ MP4, AVI 50MB
  • หากเกิดการหมดเวลาเนื่องจากปัญหาเครือข่าย ผู้ใช้จะได้รับการแจ้งเตือนทั่วไปโดยไม่มีสื่อ
  • ในเครือข่ายที่มีความเร็วช้า การดาวน์โหลดอาจใช้เวลานานถึง 10 นาที ดังนั้นโปรดใช้สื่อที่มีขนาดเหมาะสมโดยคำนึงถึงสภาพเครือข่ายในพื้นที่

การดำเนินการ

ต้องการการตั้งค่าและการเพิ่มโค้ดต้นทางบางอย่างเพื่อดาวน์โหลดสื่อ ปรับการตั้งค่าออบเจ็กต์การแจ้งเตือน และส่งมอบให้กับผู้ใช้

Note

ไม่สามารถรวม Notification Service Extension ในไลบรารีหรือเฟรมเวิร์กได้ ดังนั้นคุณต้องตั้งค่าตามคำแนะนำที่ให้โดย Hive SDK เพื่อใช้ Extension.

การเพิ่มส่วนขยาย

ในการใช้ฟีเจอร์นี้ คุณต้องเพิ่ม Notification Service Extension ลงในโปรเจกต์ของคุณ และเพิ่มเป้าหมายใหม่ลงในโปรเจกต์ โดยไม่ต้องเพิ่มหรือเขียนทับคลาสด้วยตนเอง.

เมื่อคุณเพิ่มเป้าหมายไปยังโปรเจกต์ เทมเพลตจะถูกสร้างขึ้นโดยอัตโนมัติ

1. ในการตั้งค่าโปรเจกต์ ให้คลิกที่ปุ่มรูปบวก (สี่เหลี่ยมสีแดงด้านล่าง) เพื่อเพิ่มเป้าหมาย.

2. เลือก Notification Service Extension และคลิก ถัดไป.
(Notification Service Extension สามารถเพิ่มลงในโปรเจ็กต์เป็นเป้าหมายได้ตั้งแต่ Xcode 8 เป็นต้นไป)

3. ป้อน ชื่อผลิตภัณฑ์.

4. เมื่อหน้าเว็บปรากฏขึ้นดังต่อไปนี้ ให้คลิกที่ปุ่ม Activate.
ส่วนขยายจะถูกฝังโดยอัตโนมัติกับโครงการปัจจุบัน และแผนสำหรับการสร้างจะถูกเพิ่มเข้าไป

5. ยืนยันการเพิ่ม Extension ในแท็บ General.

6. คลาสแม่แบบใหม่ชื่อ NotificationService ถูกเพิ่มเข้ามาในโปรเจกต์.

7. ตั้งค่า Deployment Target ของ Extension ที่เพิ่มเป็น 10.2 และสูงกว่า

การเพิ่ม Hiveextensions framework

HIVEExtension.framework ซึ่งจัดทำโดย Hive SDK ทำให้การดาวน์โหลดสื่อเป็นเรื่องง่าย
เพื่อเพิ่ม HIVEExtensionFramework:

1. เพิ่ม Framework ด้วยตนเอง.

  • เพิ่ม HIVEExtension.framework ในโปรเจกต์.

  • เมื่อหน้าเว็บปรากฏขึ้นดังต่อไปนี้ ให้ตรวจสอบเป้าหมายของส่วนขยายที่เพิ่มเข้ามาและคลิกปุ่ม Finish

2. กำหนดเส้นทางการค้นหา Framework.

เพิ่มเส้นทางการบันทึกของ HIVEExtension.framework ไปที่ Xcodeproj > เลือกเป้าหมายส่วนขยายที่สร้างขึ้น > การตั้งค่าการสร้าง > เส้นทางการค้นหาเฟรมเวิร์ก.

3. กำหนดสถานะของเฟรมเวิร์ก.

สำหรับเกมที่รองรับ iOS 10.2 และต่ำกว่า ให้ตั้งค่า HIVEExtensions.framework เป็น Optional.

  • Xcodeproj > เลือกเป้าหมายส่วนขยายที่สร้างขึ้น > ทั่วไป > เฟรมเวิร์กและไลบรารีที่เชื่อมโยง

การใช้เฟรมเวิร์ก

นำเข้าเฟรมเวิร์กไปยัง NotificationService.m ตามตัวอย่างโค้ดด้านล่างนี้.

ดำเนินการเรียกใช้วิธีการที่จัดเตรียมโดย HIVEExtensions.framework จากวิธีการในเทมเพลต จากนั้น ลบโค้ดเทมเพลตเริ่มต้นในวิธีการ

#import <HIVEExtensions/HIVEExtensions.h>

- (void)didReceiveNotificationRequest:(UNNotificationRequest *)request withContentHandler:(void (^)(UNNotificationContent * _Nonnull))contentHandler {
[HIVENotificationService didReceiveNotificationRequest:request withContentHandler:contentHandler];
}

- (void)serviceExtensionTimeWillExpire {
[HIVENotificationService serviceExtensionTimeWillExpire];
}

หมายเหตุเกี่ยวกับการใช้งานสื่อ

ความแตกต่างระหว่างเวลาส่งและรับ

หลังจากที่ส่วนขยายเสร็จสิ้นการทำงานทั้งหมด การส่งการแจ้งเตือนไปยังผู้ใช้ อาจทำให้เกิดความไม่สอดคล้องกันในเวลาที่ส่งและเวลาที่รับ ลูกค้าจะแสดงเวลาที่เซิร์ฟเวอร์ส่ง

ตัวอย่างเช่น หากคุณส่งการแจ้งเตือนในเวลา 15:00 และการดาวน์โหลดเสร็จสิ้นในเวลา 15:05 เวลาที่การแจ้งเตือนมาถึงคือ 15:00

ความจุของอุปกรณ์

สื่อที่ส่งผ่านบริการพุชจะถูกเก็บไว้ในอุปกรณ์ของผู้ใช้และแสดงผ่านการแจ้งเตือนพุช สื่อที่ได้รับจะถูกเก็บไว้ในหน่วยความจำแคชภายใน และใช้พื้นที่ความจุภายในของอุปกรณ์ผู้ใช้

ระบบ OS จะลบข้อมูลบางส่วนจากพื้นที่ข้อมูลแคชเมื่อความจุการจัดเก็บภายในของอุปกรณ์ผู้ใช้ไม่เพียงพอ.

การใช้ข้อมูลมือถือของผู้ใช้

การดาวน์โหลดสื่อใช้ข้อมูลมือถือของผู้ใช้ สื่อจะถูกส่งผ่านการแจ้งเตือนแบบพุช และการดาวน์โหลดจะดำเนินต่อไปโดยไม่ต้องได้รับความเห็นชอบจากผู้ใช้ ดังนั้นอาจมีค่าใช้จ่ายในการใช้ข้อมูลสำหรับการดาวน์โหลด

เมื่อผู้ใช้ได้รับไฟล์เสียงหรือวิดีโอผ่านบริการพุช ให้ตรวจสอบสถานะการเชื่อมต่อเครือข่ายของผู้ใช้แต่ละคนก่อนที่จะดาวน์โหลด หากผู้ใช้ไม่ได้เปิดใช้งาน Wi-Fi ให้เปิดเผยการพุชโดยไม่มีสื่อเพื่อป้องกันการดาวน์โหลด

ประเภทของสื่อที่ส่งผ่านการแจ้งเตือนแบบพุชจะถูกตรวจสอบด้วยนามสกุลที่ระบุไว้ที่ส่วนท้ายของ URL สื่อ และจะมีเพียงนามสกุลที่ระบุไว้ใน [ข้อจำกัดด้านขนาดไฟล์และประเภท] เท่านั้นที่ถูกเปิดเผย

URL ที่ถูกส่ง Wi-Fi LTE/3G
http://xxx/notimovie.mp4 เปิดเผยสื่อในการแจ้งเตือนหลังจากดาวน์โหลดเสมอ เปิดเผยสื่อในการแจ้งเตือนโดยไม่ต้องดาวน์โหลดเนื่องจากนามสกุลไฟล์วิดีโอถูกระบุ (.mp4)
http://xxx/notimovie เปิดเผยสื่อในการแจ้งเตือนหลังจากดาวน์โหลดเสมอ เปิดเผยสื่อในการแจ้งเตือนหลังจากดาวน์โหลดเนื่องจากไม่ใช่ไฟล์เสียงหรือสื่อ
http://xxx/notisound.wav เปิดเผยสื่อในการแจ้งเตือนหลังจากดาวน์โหลดเสมอ เปิดเผยสื่อในการแจ้งเตือนโดยไม่ต้องดาวน์โหลดเนื่องจากนามสกุลไฟล์เสียงถูกระบุ (.wav)
http://xxx/notiimage.jpg เปิดเผยสื่อในการแจ้งเตือนหลังจากดาวน์โหลดเสมอ เปิดเผยสื่อในการแจ้งเตือนหลังจากดาวน์โหลดเนื่องจากไม่ใช่ไฟล์เสียงหรือสื่อ

การตั้งค่าความปลอดภัยในการขนส่งแอป

โดยทั่วไปนโยบายของ Apple คือการอนุญาตให้ใช้ https กับการสื่อสารของเซิร์ฟเวอร์ในแอปทั้งหมด นโยบายนี้มีอิทธิพลต่อ URL ที่ได้รับผ่านการแจ้งเตือน หากคุณต้องการใช้ http การตั้งค่า App Transport Security ("ATS") ยกเว้นจึงเป็นสิ่งจำเป็น กำหนดค่า ATS ยกเว้นในส่วนขยายเพื่อใช้ http ในการรับ URL ผ่านการแจ้งเตือนแบบพุชแม้ว่าแอปพลิเคชันจะได้ดำเนินการ ATS ยกเว้นแล้วก็ตาม

วิธีการแก้ไขข้อผิดพลาด bitcode

หาก bitcode ถูกเปิดใช้งานในการตั้งค่าของ Extension ที่เพิ่มเข้าไป อาจเกิดข้อผิดพลาดดังต่อไปนี้ เมื่อเกิดข้อผิดพลาด ให้ set Xcodeproj > Select the generated Extension Target > Build Settings > Enable Bitcode เป็น No.

ในกรณีที่เกิดข้อผิดพลาดในการส่งสื่อบน Unity

Hub connection error Error Domain=NSCocoaErrorDomain Code=4097 "connection to service named com.com2us.hivesdk.normal.freefull.apple.global.ios.universal.NotificationServiceExtension" UserInfo={NSDebugDescription=connection to service named com.com2us.hivesdk.normal.freefull.apple.global.ios.universal.NotificationServiceExtension}

บางครั้งการส่งสื่อเกิดข้อผิดพลาดใน Unity ซึ่งแสดงบันทึกข้อผิดพลาดด้านบน ในกรณีนี้ให้ตรวจสอบว่า Architecture ของ Extension Target ที่สร้างขึ้นมีค่า armv7 และ arm64 หรือไม่