개발/Swift

LiveActivity - Push Console로 테스트 해보기

덤벨로퍼 2024. 10. 19. 17:13

푸시토큰

                let activity = try Activity.request(attributes: activityAttributes, content: content, pushType: .token)
                print("activity.id \\(activity.id.lowercased())")

                Task {
                    for await pushToken in activity.pushTokenUpdates {
                        let pushTokenString = pushToken.reduce("") {
                              $0 + String(format: "%02x", $1)
                        }

                        print("pushTokenString \\(pushTokenString)")
                   }

request한 액티비티에서

ID와 Token 정보를 바로 받을수 있음,

Token 은 비동기로 받아옴

 

 

Push Console에서 ID값 Token 값 입력하여 로컬 푸시 전송 가능함

로컬 푸시 전송으로 라이브 액티비티 update를 치려한다

General - Reciepient- Send notification to device 내부에 ID를 입력함 (소문자)

Request - Headers 내부에는

apns-push-type 에 liveactivity 선택,

priority 10 주고

apns-id 에다가 activity.id 입력

 

Payload

event → content-state 에 Content State 입력해줌

  public struct ContentState: Codable, Hashable {
        let orderStatus: OrderStatus
    }

설정했던 State 값을 넣어줌

timestamp 유닉스코드로 넣어줌, 챗지피티한테 지금 타임스탬프 유닉스코드로 달라하면 줌

stale-date , alart은 필요한지모르겠지만 일단 넣어줌 stale-date는 그냥 지금 timestamp에서 1000정도 올림

JSON 변환하면 다음과 같다

{
    "aps": {
        "event": "update",
        "content-state": {
            "orderStatus": 2 //바꾸는 상태
        },
        "timestamp": 1729133259,
        "stale-date": 1729143259,
        "alert": {
            "title": "asd",
            "body": "sad"
        }
    }
}

 

이대로 전송하면 라이브액티비티 푸시를 디바이스에서 받게 되고 상태가 바뀜

앱 내부적으로 handle해서 update 쳐야 하는줄 알았는데 그냥 알아서 상태 변환됨

 

결론 - 클라이언트는 상태와 상황에 맞게 UI를 표시하고 서버가 상황에 맞게 푸시를 날려 상태 변경 해줘야함