func takeoutObserver()

in mpush_ios_demo/mpush_ios_demo/LiveActivity/LiveActivityObserver.swift [34:84]


    func takeoutObserver() {
        Task {
            if #available(iOS 17.2, *) {
                for await tokenData in Activity<mpushTakeoutAttributes>.pushToStartTokenUpdates {
                    let mytoken = tokenData.map { String(format: "%02x", $0) }.joined()
                    if (TokenManager.shared.takeoutStartToken != mytoken) {
                        TokenManager.shared.takeoutStartToken = mytoken;
                        print("Activity startToken=\(mytoken) ")
                        CloudPushSDK.registerLiveActivityStartToken(tokenData, forActivityAttributes: "mpushTakeoutAttributes") { res in
                            print("Activity register start token result: \(res.success)")
                        }
                    }
                }
            } else {
                // Fallback on earlier versions
            }
        }

        Task {
            if #available(iOS 16.2, *) {
                for await activity in Activity<mpushTakeoutAttributes>.activityUpdates {
                    print("===== Observing the activity: \(activity.id) \(activity.attributes) ==========")

                    Task {
                        for await tokenData in activity.pushTokenUpdates {
                            let token = tokenData.map { String(format: "%02x", $0) }.joined()
                            print("==== pushToken = \(token)")
                            if TokenManager.shared.takeoutPushToken != token {
                                TokenManager.shared.takeoutPushToken = token
                                print("Observer Activity pushToken: \(activity.id) token: \(token)")
                                CloudPushSDK.registerLiveActivityPushToken(tokenData, forActivityId: activity.id) { res in
                                    print("Activity register push token result: \(res.success)")
                                }
                            }
                        }
                    }

                    Task {
                        for await state in activity.activityStateUpdates {
                            print("Observer Activity state: \(activity.id) state: \(state)")
                            CloudPushSDK.syncLiveActivityState("\(state)", forActivityId: activity.id) { res in
                                print("Sync state result: \(res.success)")
                            }
                        }
                    }
                }
            } else {
                // Fallback on earlier versions
            }
        }
    }