개발/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를 표시하고 서버가 상황에 맞게 푸시를 날려 상태 변경 해줘야함