-
LiveActivity - Push Console로 테스트 해보기개발/Swift 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를 표시하고 서버가 상황에 맞게 푸시를 날려 상태 변경 해줘야함
'개발 > Swift' 카테고리의 다른 글
[Swift] ReactorKit 사용시 고민할 부분 (비즈니스 로직, Pulse ) (0) 2024.12.21 [Error] linker command failed with exit code 1 (0) 2024.11.24 LiveActivity Dynamic island 구현하기 (3) 2024.10.16 Tuist활용하여 멀티 모듈 SwiftUI 프로젝트 생성하기 (0) 2024.10.15 Label Attribute 이미지 처리, 줄넘김 하기 (0) 2024.09.12