วิธีสร้างข้อความ Live Activity บน iOS
แนวทางปฏิบัติที่ดีที่สุดสำหรับ iOS Live Activities
การตั้งค่า Live Activity
Live Activity เป็นฟีเจอร์ที่เปิดตัวใน iOS 16.1 โดยใช้ ActivityKit framework คุณสามารถเริ่มใช้งาน Live Activity เพื่อแสดงการอัปเดตแบบเรียลไทม์จากแอปพลิเคชันของคุณบน Dynamic Island และหน้าจอล็อค ตัวอย่างเช่น แอปพลิเคชันกีฬาที่อนุญาตให้ผู้ใช้เริ่มใช้งาน Live Activity และดูการอัปเดตอย่างรวดเร็วในระหว่างเกม (ดูคู่มือฟีเจอร์ของ iOS สำหรับรายละเอียดเพิ่มเติม)
- ใช้ ActivityKit framework ในโปรเจ็กต์หลักเพื่อเริ่มต้น, อัปเดต, และสิ้นสุด Live Activity ใช้ SwiftUI และ WidgetKit ใน widget extension เพื่อสร้างอินเทอร์เฟซ Live Activity
- Live Activity สามารถเริ่มต้น, อัปเดต, และสิ้นสุดได้ไม่เพียงแค่โดยใช้ ActivityKit แต่ยังสามารถทำได้ผ่านการแจ้งเตือน Push แบบรีโมท
- ฟีเจอร์การอัปเดตการแจ้งเตือน Push สำหรับ Live Activity ไม่รองรับการใช้ p12 certificates ผู้ใช้ต้องตั้งค่าการใช้ p8 certificates
นอกจากนี้ Apple ยังจำกัดจำนวนการส่งการแจ้งเตือน Push สำหรับ Live Activity ต่อชั่วโมง หากคุณต้องการอัปเดต Live Activity ด้วยการแจ้งเตือน Push บ่อยครั้ง คุณต้องเพิ่ม NSSupportsLiveActivitiesFrequentUpdates
ในไฟล์ info.plist และตั้งค่าค่าบูลีนเป็น YES (สำหรับข้อมูลเพิ่มเติมดูที่ iOS LiveActivity)
การเพิ่มฟังก์ชัน Live Activity ในโปรเจ็กต์ของคุณ
การตั้งค่า
1. การตั้งค่า Info.plist
เพิ่มคู่คีย์-ค่าในไฟล์ Info.plist ในโปรเจ็กต์หลัก โดยที่คีย์คือ NSSupportsLiveActivities
และค่าเป็น YES;
2. เพิ่ม Widget Extension
2.1 สร้าง Target ใหม่
ไปที่ File > New > Target.
2.2 เลือก Widget Extension
2.3 ตั้งค่า Widget Extension
เลือกช่อง "Include Live Activity"
คลิก Finish
Xcode จะสร้าง Live Activity สำหรับคุณ
LiveActivityWidgetAttributes
จะกำหนดคุณสมบัติของ Live Activity รวมถึงทั้งคุณสมบัติที่สามารถเปลี่ยนแปลงได้และที่ไม่สามารถเปลี่ยนแปลงได้
LiveActivityWidgetLiveActivity
จะปรับแต่งรูปลักษณ์ของ Live Activity
จากนั้นใน LiveActivityWidgetBundle
ให้แสดง Live Activity
3. การทดสอบ
เริ่มต้น Live Activity ในโปรเจ็กต์หลัก, ฟังการเปลี่ยนแปลงของ push token และรายงาน push token ให้กับ EngageLab เมื่อรายงานสำเร็จแล้ว คุณสามารถใช้บริการของ EngageLab ในการส่งข้อความไปยัง Live Activity บนโทรศัพท์
func startLiveActivity1() {
let initialContentState = MTLAAttributes.ContentState(eventStr: "begin", eventTime: 1)
let activityAttributes = MTLAAttributes(name: "LiveActivity", number: 33, tag: "")
do {
// สร้าง Activity
let activity = try Activity.request(attributes: activityAttributes, contentState: initialContentState, pushType: PushType.token)
// ฟังการเปลี่ยนแปลงของ pushToken
Task {
for await pushtoken in activity.pushTokenUpdates {
let pushtokenstr = pushtoken.map { String(format: "%02.2hhx", arguments: [$0]) }.joined()
// ลงทะเบียน liveactivity กับ EngageLab เพื่ออัปเดตการแจ้งเตือนผ่าน liveactivityId บนแพลตฟอร์ม Push
MTPushService.registerLiveActivity("my_define_liveactivity_id", pushToken: pushtoken, completion: { code, liveactivityId, token, seq in
print("ผลลัพธ์:\(code)")
}, seq: 1)
}
}
} catch {
print("เกิดข้อผิดพลาดในการขอ Live Activity \(error.localizedDescription).")
}
}
- ตั้งแต่ iOS 17.2 เป็นต้นไป Apple อนุญาตให้ใช้การแจ้งเตือน Push ในการเริ่มต้น Live Activity ซึ่งอาศัย
pushToStartToken
ใช้ฟังก์ชันpushToStartTokenUpdates
ในการฟังการเปลี่ยนแปลงของpushToStartToken
และรายงานให้กับ EngageLab
func pushToStart() {
Task {
if #available(iOS 17.2, *) {
var beforeToken = ""
for await pushtoken in Activity<MTLAAttributes>.pushToStartTokenUpdates {
let pushtokenstr = pushtoken.map { String(format: "%02.2hhx", arguments: [$0]) }.joined()
print("pushToStartToken: MTLAAttributes -> \(pushtokenstr)")
if beforeToken == pushtokenstr {
return
}
beforeToken = pushtokenstr
MTPushService.registerLiveActivity("MTLAAttributes", pushToStartToken: pushtoken, completion: { code, alias, token, seq in
print("ลงทะเบียน MTLAAttributes pushToStartToken ผลลัพธ์: \(pushtokenstr) ผลลัพธ์:\(code) seq:\(seq)")
}, seq: seq())
}
} else {
// การสำรองสำหรับเวอร์ชันก่อนหน้า
}
}
}