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

ขั้นสูง

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

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

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

แอนดรอยด์
iOS
</tbody>

การแจ้งเตือนสื่อ iOS

โดยการใช้กรอบงาน UserNotifications ของ Apple คุณสามารถเพิ่มไฟล์สื่อ เช่น รูปภาพและวิดีโอ ลงในการแจ้งเตือน

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

กระบวนการดำเนินงาน

ฟีเจอร์การแจ้งเตือนสื่อทำงานโดยใช้ Notification Service Extension ของ iOS (ซึ่งจะเรียกว่า Extension ต่อไป)

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

  • กระบวนการส่งการแจ้งเตือนระยะไกลหลังจากการใช้ส่วนขยาย

ข้อจำกัดขนาดและประเภทไฟล์

มีขีดจำกัดขนาดเมื่อแนบไฟล์มีเดีย และข้อมูลรายละเอียดสามารถดูได้ที่ UNNotificationAttachment.

Warning

พบปรากฏการณ์ที่หน้าจอหลัก (Springboard) รีบูตเมื่อส่งออดิโอที่ได้รับผ่านพุช ขณะมีแอปที่ใช้ AVAudioSession ทำงานอยู่ เช่น YouTube หรือเกมมือถือหลายเกม (เช่น 서머너즈 워, 별이되어라, 체인스트라이크) ปัญหานี้เกิดขึ้นโดยไม่ขึ้นกับเวอร์ชัน iOS หรือรุ่นอุปกรณ์ และยืนยันแล้วว่าเป็นการชนกันภายในระบบของ Apple ที่แยกจากแพลตฟอร์ม Hive โดยได้สอบถามเหตุการณ์นี้ไปยัง Apple แล้วเมื่อวันที่ 20 ธันวาคม 2018 และจนกว่าจะมีมาตรการรับมือ โปรด หยุดใช้งานฟังก์ชันส่งออดิโอผ่านมีเดียพุช

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

การนำไปใช้และการใช้งาน

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

Note

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

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

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

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

การเพิ่ม target ในโปรเจกต์ Unity

ใน Unity Editor, Hive SDK จะดำเนินการขั้นตอนต่าง ๆ เช่น การเพิ่ม target และการเขียน Info.plist โดยอัตโนมัติด้วยฟังก์ชัน PostProcess เพียงตรวจสอบว่าจะใช้มีเดียพุชหรือไม่ และไม่ต้องทำงานอื่นเพิ่มเติม

  1. จากแถบเมนูด้านบนของ Unity Editor ให้เข้าเมนู Hive > Build project post process settings > iOS
  2. เปิดใช้งาน Push Media Contents

การเพิ่ม target ในสภาพแวดล้อมอื่นที่ไม่ใช่ Unity

ก่อนเริ่มต้น โปรดตรวจสอบรายการต่อไปนี้ก่อน

  • เพื่อใช้ push extension target โปรดตรวจสอบว่าใน provisioning profile มีสิทธิ์ (entitlement) aps-environment รวมอยู่หรือไม่ หากจำเป็นให้ขอออก provisioning profile และใบรับรองใหม่
  • หากเพิ่ม extension target โดยตรงผ่าน Xcode GUI ค่าเริ่มต้นของเวอร์ชัน target ขั้นต่ำที่รองรับของ extension target อาจถูกตั้งเป็น OS ล่าสุด โปรดตรวจสอบว่าค่านี้ไม่เกินเวอร์ชัน target ขั้นต่ำที่รองรับของ main game app target

วิธีเพิ่ม target มีดังนี้

  1. ในการตั้งค่าโปรเจกต์ Xcode ให้คลิกปุ่ม เพิ่ม target (ปุ่ม + ด้านล่างซ้าย) noti_adv_1_plus-button
  2. เลือก Notification Service Extension แล้วคลิก Next
    (ตั้งแต่ Xcode 8 เป็นต้นไป สามารถเพิ่ม Notification Service Extension เป็น target ในโปรเจกต์ได้) noti_adv_1_plus-button
  3. กรอก Product Name noti_adv_1_plus-button
  4. เมื่อป๊อปอัปตามด้านล่างแสดงขึ้น ให้คลิก Activate
    Extension จะถูกฝัง (Embedded) ในโปรเจกต์ปัจจุบันโดยอัตโนมัติ และมีการเพิ่ม Scheme สำหรับการ build noti_adv_1_plus-button
  5. ในแท็บ General ให้ตรวจสอบว่าได้มีการเพิ่ม Extension ในโปรเจกต์แล้ว noti_adv_1_plus-button
  6. ตรวจสอบว่าได้มีการเพิ่มคลาสเทมเพลต NotificationService ลงในโปรเจกต์แล้ว noti_adv_1_plus-button


การเพิ่ม HIVEExtensions.framework

คุณสามารถดาวน์โหลดสื่อได้อย่างง่ายดายโดยใช้ HIVEExtensions.framework ที่จัดเตรียมโดย Hive.

วิธีการเพิ่ม HIVEExtensions.framework มีดังนี้:

  1. Hive SDK รองรับ CocoaPods หากไม่มี Podfile ในไดเรกทอรีโปรเจกต์ของคุณ ให้รัน pod init. noti_adv_7-2_pod-init-terminal

ถ้าคุณมี Podfile อยู่แล้ว ให้เปิดไฟล์และเพิ่มคำสั่งเป้าหมาย 'NotificationServiceExtension (ชื่อเป้าหมายตัวอย่าง)' do-end statement. noti_adv_7-2_pod-init-terminal

  1. อ้างอิงจากภาพหน้าจอและเขียนคำแถลงของ pod. noti_adv_7-2_pod-init-terminal

  2. ปิดไฟล์ Podfile และรัน pod install ในไดเรกทอรีโปรเจกต์ของคุณ. noti_adv_7-2_pod-init-terminal

  3. เมื่อคุณเปิด NotificationSample (ชื่อโปรเจ็กต์ตัวอย่าง).xcworkspace คุณจะเห็นว่าโปรเจ็กต์ Pods ได้ถูกเพิ่มเข้ามาแล้วตามที่แสดงด้านล่าง คุณสามารถนำเข้า HIVEExtensions ในทั้งเป้าหมาย NotificationSample และ NotificationServiceExtension ได้แล้ว noti_adv_7-2_pod-init-terminal

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

นำเข้าเฟรมเวิร์กในไฟล์ NotificationService.swift ตามที่แสดงในตัวอย่าง ดำเนินการตามวิธีที่ให้ไว้ในแม่แบบเพื่อติดต่อกับวิธีการที่ให้โดย HIVEExtensions.framework และ ลบโค้ดแม่แบบเดิมที่อยู่ภายในวิธีการ

import HIVEExtensions

func didReceiveNotificationRequest(request: UNNotificationRequest, with contentHandler: (UNNotificationContent) -> Void) {
    HIVENotificationService.didReceive(request) { content in
        guard let content else { return }
        contentHandler(content)
    }
}

func serviceExtensionTimeWillExpire() {
    HIVENotificationService.serviceExtensionTimeWillExpire()
}
#import <HIVEExtensions/HIVEExtensions.h>

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

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

ข้อควรระวังในการใช้งาน

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

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

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

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

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

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

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

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

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

URL ที่ได้รับ wifi 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 คุณจะต้องตั้งค่าการยกเว้น ATS ในส่วนขยายเพื่อใช้โดเมน http สำหรับ URL ที่ส่งผ่านการแจ้งเตือนแบบพุช

เมื่อสื่อไม่ได้ถูกส่งใน 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 อาจมีกรณีที่สื่อไม่ได้ถูกส่งในขณะที่แสดงบันทึกข้อผิดพลาดเช่นเดียวกับที่แสดงข้างต้น ในกรณีนี้ โปรดตรวจสอบว่าค่าทั้ง armv7 และ arm64 รวมอยู่ในสถาปัตยกรรมของเป้าหมายส่วนขยายที่สร้างขึ้นหรือไม่ noti_adv_7-2_pod-init-terminal

ปุ่มการกระทำแบบพุช

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

ด้วย SDK Hive คุณสามารถติดตั้งปุ่มการกระทำแบบพุชได้อย่างง่ายดายด้วยการตั้งค่าที่เรียบง่าย

แอนดรอยด์ iOS
noti_adv_14-1_push_action_mockup_ad noti_adv_14-2_push_action_mockup_ios
Note

ไม่จำเป็นต้องตั้งค่าเพิ่มเติมสำหรับปุ่มการกระทำการส่งใน Android SDK ดูรายละเอียดเกี่ยวกับการใช้ฟีเจอร์ปุ่มการกระทำได้ที่ Single Push API - ActionPayload Guide สำหรับ iOS SDK คุณสามารถใช้วิธีการติดตั้งแบบพื้นฐานหรือขั้นสูงในการ implement ปุ่มการกระทำการส่ง

Warning

เมื่อใช้ปุ่มการกระทำแบบพุชร่วมกับ iOS Media Notification ใน iOS SDK ฟีเจอร์การแจ้งเตือนสื่ออาจทำงานไม่ถูกต้อง เมื่อส่งพุช ให้ใช้ฟีเจอร์เพียงหนึ่งอย่างในแต่ละครั้ง—ไม่ว่าจะเป็น 'media URL' หรือ 'action push' หากทั้งสองอย่างถูกใช้พร้อมกัน จะมีเพียงภาพขนาดย่อของสื่อที่แสดงในใบเสร็จ และผู้ชมที่ขยายจะไม่ปรากฏเมื่อกดค้าง

Warning

หากต้องการใช้ iOS push action ใน Unreal Engine ต้อง build แอป iOS โดยใช้ Modern Build ที่รองรับตั้งแต่ Unreal Engine 5.3.2 เป็นต้นไป (ทดสอบแล้วในสภาพแวดล้อม Unreal Engine 5.6.0 / Xcode 16.1 / macOS 15.5)

การใช้งานพื้นฐาน (iOS)

SDK ของ Hive มีชุดปุ่มการกระทำแบบพุชที่ตั้งค่าไว้ล่วงหน้าซึ่งอิงจากรูปแบบที่ใช้บ่อย เช่น 'ยืนยัน', 'ปฏิเสธ' เป็นต้น การรวมปุ่มที่ตั้งไว้ล่วงหน้าสามารถนำไปใช้ได้อย่างรวดเร็ว และคุณยังสามารถกำหนดและขยายชุดปุ่มการกระทำที่กำหนดเองได้ตามต้องการ ชุดปุ่มการกระทำแบบพุชที่ตั้งไว้ล่วงหน้ามีดังต่อไปนี้

  • ยืนยัน
  • ปิด
  • ยืนยัน, ปิด
  • ดำเนินการ, ยกเลิก
  • ยอมรับทั้งหมด, ปิด
  • ขอรับทันที, ปิด
  • ซื้อ, ปฏิเสธ
  • ขาย, ปฏิเสธ
  • ยอมรับ, ปฏิเสธ, ถือ
หมวดหมู่(รหัสหมวดหมู่) ชื่อปุ่ม(รหัสการกระทำ)
ยืนยัน(INFO_CATEGORY) ยืนยัน(CONFIRM_ID)
ปิด(CLOSE_CATEGORY) ปิด(CLOSE_ID)
ยืนยันการเลือก(CONFIRM_CATEGORY) ยืนยัน(CONFIRM_ID), ปิด(CLOSE_ID)
ดำเนินการ(EXECUTE_CATEGORY) ดำเนินการ(EXECUTE_ID), ยกเลิก(CANCEL_ID)
ยอมรับแบบกลุ่ม(ACCEPT_ALL_CATEGORY) ยอมรับทั้งหมด(ACCEPT_ALL_ID), ปิด(CLOSE_ID)
การเรียกร้องทันที(ACCEPT_NOW_CATEGORY) เรียกร้องตอนนี้(ACCEPT_NOW_ID), ปิด(CLOSE_ID)
การตัดสินใจซื้อ(PURCHASE_CATEGORY) ซื้อ(PURCHASE_ID), ปฏิเสธ(DECLINE_ID)
คำขอขาย(SALE_CATEGORY) ขาย(SALE_ID), ปฏิเสธ(DECLINE_ID)
การตัดสินใจ(ACCEPT_DECISION_CATEGORY) ยอมรับ(ACCEPT_ID), ปฏิเสธ(REJECT_ID), รอ(HOLDING_ID)

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

การใช้ชุดปุ่ม push action ใน Unity

ใน Unity Editor ฟังก์ชัน PostProcess ของ Hive SDK จะดำเนินการขั้นตอนต่าง ๆ เช่น การเพิ่ม target และการเขียน Info.plist โดยอัตโนมัติ เพียงตรวจสอบว่าจะใช้ปุ่ม push action หรือไม่ และไม่ต้องทำงานอื่นเพิ่มเติม

  1. จากแถบเมนูด้านบนของ Unity Editor ให้เข้าเมนู Hive > Build project post process settings > iOS.
  2. เปิดใช้งาน Push Action Buttons.

รายการที่แสดงเมื่อเปิดใช้งานปุ่มคือพรีวิวของรายการฟิลด์ categories ภายในไฟล์ hive_push_actions.json ที่ใช้ใน วิธีการใช้งานขั้นสูง ด้านล่าง หากดำเนินการด้วยการติดตั้งพื้นฐานโดยไม่มีไฟล์ดังกล่าว จะแสดงเป็น 'none'.

การใช้ชุดปุ่ม push action ในสภาพแวดล้อมอื่นที่ไม่ใช่ Unity

ก่อนเริ่มต้น โปรดตรวจสอบรายการต่อไปนี้ก่อน

  • เพื่อใช้ push extension target โปรดตรวจสอบว่าใน provisioning profile มีสิทธิ์ (entitlement) aps-environment รวมอยู่หรือไม่ หากจำเป็นให้ขอออก provisioning profile และใบรับรองใหม่
  • หากเพิ่ม extension target โดยตรงผ่าน Xcode GUI ค่าเริ่มต้นของเวอร์ชัน target ขั้นต่ำที่รองรับของ extension target อาจถูกตั้งเป็น OS ล่าสุด โปรดตรวจสอบว่าค่านี้ไม่เกินเวอร์ชัน target ขั้นต่ำที่รองรับของ main game app target

ถัดไป หลังจากสร้างโปรเจกต์ Xcode (.xcodeproj) แล้ว ให้ดำเนินการตามลำดับด้านล่าง

ขั้นตอนที่ 1 เพิ่ม push extension target

สร้าง extension target ใหม่และเชื่อมต่อกับ app target ตามลำดับต่อไปนี้

  1. ในการตั้งค่าโปรเจกต์ Xcode ให้กดปุ่ม + ด้านล่างซ้ายเพื่อเพิ่ม target. noti_adv_11_adding-content-extension_1
  2. เลือก Notification Content Extension แล้วคลิก Next. noti_adv_11_adding-content-extension_2
  3. ป้อน Product Name และกำหนด main game app target ให้กับ Embed in Application. noti_adv_11_adding-content-extension_3
  4. เมื่อป๊อปอัปด้านล่างปรากฏขึ้น ให้คลิก Activate. Extension จะถูกฝัง (Embedded) ในโปรเจกต์ปัจจุบันโดยอัตโนมัติ และมีการเพิ่ม Scheme สำหรับการ build. noti_adv_11_adding-content-extension_4
  5. ใน General > Frameworks, Libraries, and Embedded Content ของ main game app target ให้ตรวจสอบว่า Product Name ที่ป้อนไว้ด้านบนถูกเพิ่มแล้ว. noti_adv_11_adding-content-extension_5
ขั้นตอนที่ 2 ปรับแต่งไฟล์ที่สร้างอัตโนมัติ

สำหรับไฟล์ 3 ไฟล์ต่อไปนี้ที่ถูกสร้างอัตโนมัติในกลุ่ม Product Name ให้ดำเนินการตามด้านล่างกับแต่ละไฟล์

ลบ MainInterface.storyboard

ลบ Product Name/MainInterface.storyboard.

แก้ไข NotificationViewController.swift

แก้ไข Product Name/NotificationViewController.swift.

noti_adv_11_adding-content-extension_6-1

ให้แก้ไขเนื้อหาของไฟล์คลาสเทมเพลตที่สร้างอัตโนมัติตามด้านล่าง คุณสามารถคัดลอกโค้ดบล็อกด้านล่างไปใช้ หรือเพิ่มบรรทัดที่เน้นสีส้มในภาพ.

import UIKit
import HIVEExtensions
import UserNotifications
import UserNotificationsUI

class NotificationViewController: UIViewController, UNNotificationContentExtension {

    func didReceive(_ notification: UNNotification) {
        HiveNotificationContent.didReceive(notification)
    }

    func didReceive(_ response: UNNotificationResponse) async -> UNNotificationContentExtensionResponseOption {
        await HiveNotificationContent.didReceive(response)
    }

}

noti_adv_11-adding-content-extension_6-2

แก้ไข Info.plist

แก้ไข Product Name/Info.plist.

ตามลำดับต่อไปนี้ ให้วางโค้ดด้านล่างไว้ใต้บรรทัด Information Property List ระดับบนสุด (รูทดิกชันนารี, บรรทัดที่เน้นสีส้มในภาพ).

  1. ขยายบรรทัด Information Property List ระดับบนสุด แล้วลบรายการย่อย NSExtension.
  2. พับบรรทัดเดิมแล้วคลิกขวา จากนั้นเลือก Paste (วาง).
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>NSExtension</key>
    <dict>
    <key>NSExtensionAttributes</key>
    <dict>
        <key>UNNotificationExtensionInitialContentSizeRatio</key>
        <integer>0</integer>
        <key>UNNotificationExtensionCategory</key>
        <array>
        <string>INFO_CATEGORY</string>
        <string>CLOSE_CATEGORY</string>
        <string>CONFIRM_CATEGORY</string>
        <string>EXECUTE_CATEGORY</string>
        <string>ACCEPT_ALL_CATEGORY</string>
        <string>ACCEPT_NOW_CATEGORY</string>
        <string>PURCHASE_CATEGORY</string>
        <string>SALE_CATEGORY</string>
        <string>ACCEPT_DECISION_CATEGORY</string>
        </array>
    </dict>
    <key>NSExtensionPrincipalClass</key>
    <string>$(PRODUCT_NAME).NotificationViewController</string>
    <key>NSExtensionPointIdentifier</key>
    <string>com.apple.usernotifications.content-extension</string>
    </dict>
</dict>
</plist>

noti_adv_11_adding-content-extension_7

ขั้นตอนที่ 3 ระบุ custom category

ค่า UNNotificationExtensionCategory ของ Info.plist ที่แก้ไขในขั้นตอนด้านบนคือหมวดหมู่ที่ Hive SDK เตรียมไว้ให้โดยค่าเริ่มต้น หากมี custom category ที่เขียนไว้ใน hive_push_actions.json ตาม วิธีการใช้งานขั้นสูง ด้านล่าง โปรดเพิ่มเข้าไปเป็นองค์ประกอบของอาร์เรย์ด้วย

ขั้นตอนที่ 4 เพิ่ม dependency

เชื่อมต่อ dependency ที่จำเป็นกับ push extension target หากได้เพิ่มไว้แล้วทันทีหลังจากสร้างโปรเจกต์ผ่าน CocoaPods เป็นต้น สามารถข้ามขั้นตอนนี้ได้

  • เพิ่มโดยใช้เครื่องมือจัดการ dependency
    • เมื่อใช้ CocoaPods: โปรดดู คู่มือ และเพิ่ม HiveExtensions ให้กับ push extension target
    • เมื่อใช้ Swift Package Manager: โปรดดู คู่มือ และเพิ่ม Hive_Extensions ให้กับ push extension target
  • เพิ่มด้วยตนเอง
    • เพิ่มด้วยตนเองบน Xcode GUI หรือเชื่อมต่อโดยเขียนสคริปต์ build pipeline
    • สำหรับ Unreal Engine ไม่รองรับเครื่องมือจัดการ dependency แยกต่างหาก จึงให้ดำเนินการด้วยวิธีนี้
    • เพิ่ม HIVEExtensions.framework ใน General > Frameworks and Libraries ของการตั้งค่า extension target

noti_adv_11_adding-content-extension_8

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

สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับการตั้งค่าคอนโซล โปรดดูที่คู่มือคอนโซล.

การใช้งานขั้นสูง (iOS)

กำหนดค่า actions และ categories ในไฟล์ hive_push_actions.json หลังจากกำหนดแล้ว ให้รวมไฟล์ hive_push_actions.json ในเป้าหมายของคุณและสร้างแอป เมื่อแอปทำงาน SDK Hive จะทำการวิเคราะห์ไฟล์โดยอัตโนมัติและลงทะเบียนการกระทำและหมวดหมู่ในศูนย์การแจ้งเตือน

ตัวอย่างของไฟล์ hive_push_actions.json แสดงด้านล่างนี้

hive_push_actions.json ตัวอย่าง
{
    "actions": {
        "ACCEPT_ALL_ID": { ... },
        "ACCEPT_ID": { ... },
        "ACCEPT_NOW_ID": { ... },
        "CANCEL_ID": { ... },
        "CLOSE_ID": { ... },
        "CONFIRM_ID": { ... },
        "DECLINE_ID": { ... },
        "EXECUTE_ID": { ... },
        "HOLDING_ID": { ... },
        "PURCHASE_ID": { ... },
        "REJECT_ID": { ... },
        "SALE_ID": { ... }
    },
    "categories": {
        "INFO_CATEGORY": ["CONFIRM_ID"],
        "CLOSE_CATEGORY": ["CLOSE_ID"],
        "CONFIRM_CATEGORY": ["CONFIRM_ID", "CLOSE_ID"],
        "EXECUTE_CATEGORY": ["EXECUTE_ID", "CANCEL_ID"],
        "ACCEPT_ALL_CATEGORY": ["ACCEPT_ALL_ID", "CLOSE_ID"],
        "ACCEPT_NOW_CATEGORY": ["ACCEPT_NOW_ID", "CLOSE_ID"],
        "PURCHASE_CATEGORY": ["PURCHASE_ID", "DECLINE_ID"],
        "SALE_CATEGORY": ["SALE_ID", "DECLINE_ID"]
    }
}

หมายเหตุสำหรับการเขียนไฟล์:

  • จำนวนปุ่มสูงสุดต่อหมวดหมู่ (ชุด) คือ 3.
  • ตัวอย่างข้างต้นกำหนดชุดปุ่มเริ่มต้น สำหรับปุ่มการกระทำที่กำหนดเอง ห้ามใช้ตัวระบุซ้ำ; ใช้สตริงที่ไม่ซ้ำกันและสามารถแยกแยะได้.
  • การสนับสนุนหลายภาษาจะตาม ภาษาของเกม และคุณสามารถป้อนภาษาที่รองรับได้สูงสุด 16 ภาษาโดย SDK ของ Hive ภาษาอังกฤษ ("en") เป็นค่าที่จำเป็นสำหรับสตริงหลายภาษา.
Note

Unity PostProcess ได้รับการสนับสนุน หากคุณเพิ่มไฟล์ hive_push_actions.json ไปยังเส้นทางเดียวกับ hive_config.xml ในโปรเจกต์ Unity ของคุณ มันจะถูกเพิ่มไปยังเป้าหมายแอปโดยอัตโนมัติเมื่อสร้างโปรเจกต์ Xcode.

Warning

หลังจากเขียนไฟล์แล้ว ให้เพิ่มคีย์จากฟิลด์ "categories" ในไฟล์ไปยัง UNNotificationExtensionCategory ใน Info.plist ของ Notification Content Extension.
ใน Unity จะทำโดยอัตโนมัติโดยการวิเคราะห์ไฟล์

คำถามที่พบบ่อย

หากปุ่มการกระทำที่กำหนดเองไม่ปรากฏแม้หลังจากรวมไฟล์
  • ตรวจสอบให้แน่ใจว่าชื่อไฟล์คือ 'hive_push_actions.json'.
  • ตรวจสอบให้แน่ใจว่ามันถูกนำไปใช้ใน Copy Bundle Resources. noti_adv_15-1_push_action_faq1