푸시 알림 장치 토큰이 생성되면 변경됩니까?
앱이 업데이트되는 예 ? 또는 다른 경우에는 변경할 수 있습니까 ??
답변
이 토큰 신뢰 단계의 형식은 APN만이 나중에 존중할 토큰을 생성하도록 보장하며, 장치가 전달한 토큰이 이전에 특정 장치에 대해 프로비저닝 된 것과 동일한 토큰임을 스스로 보장 할 수 있습니다. 그 장치를 위해.
사용자가 백업 데이터를 새 장치로 복원하거나 운영 체제를 다시 설치하면 장치 토큰이 변경됩니다.
답변
이 점에 대한 Apple의 공식 문서는 명확하지 않습니다. 내가 관찰 한 것은 이것이다 : 토큰은 주어진 장치, 응용 프로그램 및 도메인 (프로덕션 대 샌드 박스)에 대해 변하지 않습니다. 시스템이 안정적으로 작동하려면 이것이 사실로 유지되어야한다고 생각합니다. 애플리케이션 업데이트가 새 APN 토큰을 트리거하는 상황을 고려하십시오. 알림이 활성화 된 트위터와 유사한 가장 멋진 앱을 사용하고 있다면 iTunes에서 앱을 업데이트하면 어떻게됩니까? 업데이트를 장치에 “동기화”한 후 응용 프로그램을 실행하지 않은 경우에도 알림이 계속 전송 될 것으로 예상해야합니까? 업데이트 된 앱을 실행하지 않은 경우에도 OS가 사용자를 대신하여 알림을받을 수 있으므로 애플리케이션을 변경하는 행위는 APN 시스템에 영향을 미치지 않습니다.
분명히 애플은 “애플리케이션은 시작할 때마다 [APN 서버에] 등록해야하며 공급자에게 현재 토큰을 제공해야합니다.”라고 말합니다. 전적으로 동의합니다. 이렇게하면 잘못된 가정이나 비정상적인 상황으로부터 애플리케이션을 보호 할 수 있습니다.
푸시 알림 토큰은 단일 장치의 모든 앱에서 고유합니까? 에 대한 답변 중 하나입니다 . 장치 토큰이 “운영 체제 설치”별로 고유함을 나타냅니다. 백업에서 장치로 복원하면 토큰이 유지되지만 장치를 지우면 새 토큰을 얻게됩니다. 이는 원활한 작동 및 개인 정보 보호에 대한 Apple의 의도와 전적으로 일치합니다. 장치를 지우는 것은 새로운 연결이 필요할 수있을만큼 심각하지만 OS 업데이트 후 이미지를 복원하는 사용자는 기존 알림을 보존하기를 원할 것입니다. iPad에서 최근 iOS5 업데이트를 기억하면 업그레이드 후 가장 최근 백업을 복원했기 때문에 알림 토큰의 일관성이 유지되었을 것입니다. [편집 : 백업을 다른 위치로 복원 장치는 토큰을 복제하지 않습니다.]
주의 사항 :이 주제에 대한 명확한 지식이 없으며 APN (타사 개발자)으로 작업 한 합리적인 경험이 있습니다. 항상 그렇듯이 가정을 확인하는 것이 가장 좋습니다.
업데이트 (2012 년 6 월) :
저는 최근에 a> Apple 엔지니어와 이야기하고 b> 실제 테스트를 실행할 수있는 기회가 있었고 결과를 발표하고 싶었습니다.
완료하기 위해 APN 토큰 반환에 대해 이야기 할 때 단일 번들 식별자 / 애플리케이션의 컨텍스트를 가정합니다.
첫째, Apple 엔지니어는 두 장치가 동일한 APN을 반환하는 것이 가능하지 않아야한다고 말했습니다. 아래의 설명에도 불구하고 이것이 실패하는 상황을 식별 할 수 없었습니다.
둘째, 다음은 업그레이드 테스트 순서 및 결과입니다.
-
iPhone4에 설치된 iOS4로 시작하십시오. iTunes의 백업 장치
-
iOS5로 업그레이드
이전 테스트에서 APN 토큰이 이제 다르다는 것을 알고 있습니다. -
장치에 백업 복원
APN 토큰은 이제 1 단계와 동일합니다. -
iOS 재설정 (깨끗한 장치)
APN 토큰 변경 -
다른 전화를 iTunes에 백업하고 해당 백업을 테스트 장치로 복원하십시오. 기본적으로 전화를 바꾸는 것처럼 “잘못된”백업을 복원하고 있습니다.
APN 토큰이 다시 변경됩니다. 또한 그것은 고유하고 원래 토큰 또는 “복제 된”토큰과 일치하지 않습니다. -
장치에 “올바른”백업을 복원하십시오.
APN 토큰은 이제 1 단계와 동일합니다. -
마지막으로 휴대 전화를 iOS6 (베타 2)로 업그레이드하고 백업을 복원하고 다시 테스트했습니다. 예상대로 토큰은 1 단계의 토큰과 계속 일치했습니다.
이 시점에서 저는 APN 토큰을 다른 장치간에 복제 할 수 없다고 확신합니다. 아마도 이것은 이전 버전의 iOS에서 버그로 발생했을 수 있지만 iOS5 (그리고 아마도 iOS6)가 APN 토큰을 올바르게 처리하고 있다고 확신합니다.
업데이트 (2012 년 8 월)
나는 이것을 추가하지 않았다는 것을 깨달았습니다. 장치 토큰 이 변경됩니다. Apple 개발자 중 한 명이 토큰이 실제로 만료된다는 사실을 공유했습니다 (2 년 후). 많은 목적을 위해 이것은 불변으로 생각할 수있을만큼 충분히 길다.
[특히 매년 휴대폰을 교체하기 때문에 2 년마다 새로운 토큰으로 테스트 스크립트를 업데이트해야하는지 걱정하지 않습니다.]
답변
앱을 다시 설치 하면 iOS9 및 APN 푸시 토큰 변경 사항으로 방금 테스트했습니다 .
답변
예 , 기기 토큰이 변경 될 수 있습니다.
앱은 토큰을받을 때마다이를 저장해야합니다. 새로운 토큰이 수신 될 때마다 그런 다음, (이 것입니다 서로 다른 경우에 발생, 결국), 저장된 토큰에 새 토큰을 비교 :
- 장치의 로컬 저장소를 업데이트합니다 (일 수 있음
nil
). - 새 토큰을 인식하기 위해 토큰을 사용하는 장치의 모든 항목을 업데이트합니다.
- 이 토큰을 인식하는 API를 새 토큰으로 업데이트하십시오.
실제적으로 마지막 단계는 사소하지 않을 가능성이 가장 높습니다. 당신이 장치에 가입했다고 우편 번호 내용에 따라 토큰 장치에 날씨 경고를 보내는 서비스가있는 경우 예를 들어, 당신은 통과해야 old_token
하고,을 new_token
은 납기를 업데이트 할 수 있도록했다 서비스.
Ergo는 일반적으로 “장치 토큰”을 수락하는 API의 100 %도 UPDATE
해당 토큰을위한 일종의 기능을 가지고 있어야합니다 . 이를 위해 빌드 하지 않는다는 것은 잘못 전달되거나 전달되지 않은 알림 을 빌드하는 것입니다.
답변
iOS 8 이상에서 기기 토큰이 변경됨
Apple 웹 사이트에서 아래 텍스트를 참조하십시오. 사용자 알림 등록, 예약 및 처리
기기 토큰은 특정 기기의 앱에 푸시 알림을 보내는 데 핵심적인 역할을합니다. 기기 토큰은 변경 될 수 있으므로 앱이 시작될 때마다 다시 등록하고 수신 된 토큰을 서버로 다시 전달해야합니다. 장치 토큰 업데이트에 실패하면 원격 알림이 사용자의 장치에 전달되지 않을 수 있습니다. 장치 토큰은 사용자가 백업 데이터를 새 장치 또는 컴퓨터로 복원하거나 운영 체제를 다시 설치할 때 항상 변경됩니다. 데이터를 새 장치 또는 컴퓨터로 마이그레이션 할 때 사용자는 해당 장치에 원격 알림을 전달하기 전에 앱을 한 번 실행해야합니다.
답변
나는 당신이을 호출 한 후에 토큰이 변경된다는 것을 아무도하지 않았기 때문에 언급 할 가치가 있다고 생각합니다 unregisterForRemoteNotifications
. registerForRemoteNotifications
다음에 호출 하면 토큰이 다릅니다. Apple 문서에서 이에 대한 확인을 찾지 못했지만 그러한 행동을 직접 목격했습니다. 이것을 명심하십시오
답변
앱이 새 기기로 복원되지 않는 한 변경해서는 안됩니다 (이 시점에서 푸시 알림을 다시 수락하라는 요청을받지 않고 새 토큰을 수락해야하는 시점에 등록 된 호출을 전송합니다).
그러나 Apple은 절대 변경되지 않는다고 보장하지 않습니다 (따라서 문서에 언급되지 않음). 최악의 경우 더 나은 프로그램을 만들고 언젠가는 바뀔 수 있다고 가정합니다. 또한 서버에 토큰을 정기적으로 보내면 한동안 등록되지 않았고 앱을 제거했거나 얼마 전에 관심을 잃었을 가능성이있는 토큰을 제거 할 수 있습니다 (문서에서는이를 원하는 동작으로 지정합니다!).