[objective-c] APNS 장치 토큰이 생성되면 변경됩니까?

푸시 알림 장치 토큰이 생성되면 변경됩니까?

앱이 업데이트되는 ? 또는 다른 경우에는 변경할 수 있습니까 ??



답변

에서 [애플 문서 ApplePushService] 2

이 토큰 신뢰 단계의 형식은 APN만이 나중에 존중할 토큰을 생성하도록 보장하며, 장치가 전달한 토큰이 이전에 특정 장치에 대해 프로비저닝 된 것과 동일한 토큰임을 스스로 보장 할 수 있습니다. 그 장치를 위해.

사용자가 백업 데이터를 새 장치로 복원하거나 운영 체제를 다시 설치하면 장치 토큰이 변경됩니다.


답변

이 점에 대한 Apple의 공식 문서는 명확하지 않습니다. 내가 관찰 한 것은 이것이다 : 토큰은 주어진 장치, 응용 프로그램 및 도메인 (프로덕션 대 샌드 박스)에 대해 변하지 않습니다. 시스템이 안정적으로 작동하려면 이것이 사실로 유지되어야한다고 생각합니다. 애플리케이션 업데이트가 새 APN 토큰을 트리거하는 상황을 고려하십시오. 알림이 활성화 된 트위터와 유사한 가장 멋진 앱을 사용하고 있다면 iTunes에서 앱을 업데이트하면 어떻게됩니까? 업데이트를 장치에 “동기화”한 후 응용 프로그램을 실행하지 않은 경우에도 알림이 계속 전송 될 것으로 예상해야합니까? 업데이트 된 앱을 실행하지 않은 경우에도 OS가 사용자를 대신하여 알림을받을 수 있으므로 애플리케이션을 변경하는 행위는 APN 시스템에 영향을 미치지 않습니다.

분명히 애플은 “애플리케이션은 시작할 때마다 [APN 서버에] 등록해야하며 공급자에게 현재 토큰을 제공해야합니다.”라고 말합니다. 전적으로 동의합니다. 이렇게하면 잘못된 가정이나 비정상적인 상황으로부터 애플리케이션을 보호 할 수 있습니다.

푸시 알림 토큰은 단일 장치의 모든 앱에서 고유합니까? 에 대한 답변 중 하나입니다 . 장치 토큰이 “운영 체제 설치”별로 고유함을 나타냅니다. 백업에서 장치로 복원하면 토큰이 유지되지만 장치를 지우면 새 토큰을 얻게됩니다. 이는 원활한 작동 및 개인 정보 보호에 대한 Apple의 의도와 전적으로 일치합니다. 장치를 지우는 것은 새로운 연결이 필요할 수있을만큼 심각하지만 OS 업데이트 후 이미지를 복원하는 사용자는 기존 알림을 보존하기를 원할 것입니다. iPad에서 최근 iOS5 업데이트를 기억하면 업그레이드 후 가장 최근 백업을 복원했기 때문에 알림 토큰의 일관성이 유지되었을 것입니다. [편집 : 백업을 다른 위치로 복원 장치는 토큰을 복제하지 않습니다.]

주의 사항 :이 주제에 대한 명확한 지식이 없으며 APN (타사 개발자)으로 작업 한 합리적인 경험이 있습니다. 항상 그렇듯이 가정을 확인하는 것이 가장 좋습니다.


업데이트 (2012 년 6 월) :

저는 최근에 a> Apple 엔지니어와 이야기하고 b> 실제 테스트를 실행할 수있는 기회가 있었고 결과를 발표하고 싶었습니다.

완료하기 위해 APN 토큰 반환에 대해 이야기 할 때 단일 번들 식별자 / 애플리케이션의 컨텍스트를 가정합니다.

첫째, Apple 엔지니어는 두 장치가 동일한 APN을 반환하는 것이 가능하지 않아야한다고 말했습니다. 아래의 설명에도 불구하고 이것이 실패하는 상황을 식별 할 수 없었습니다.

둘째, 다음은 업그레이드 테스트 순서 및 결과입니다.

  1. iPhone4에 설치된 iOS4로 시작하십시오. iTunes의 백업 장치

  2. iOS5로 업그레이드
    이전 테스트에서 APN 토큰이 이제 다르다는 것을 알고 있습니다.

  3. 장치에 백업 복원
    APN 토큰은 이제 1 단계와 동일합니다.

  4. iOS 재설정 (깨끗한 장치)
    APN 토큰 변경

  5. 다른 전화를 iTunes에 백업하고 해당 백업을 테스트 장치로 복원하십시오. 기본적으로 전화를 바꾸는 것처럼 “잘못된”백업을 복원하고 있습니다.
    APN 토큰이 다시 변경됩니다. 또한 그것은 고유하고 원래 토큰 또는 “복제 된”토큰과 일치하지 않습니다.

  6. 장치에 “올바른”백업을 복원하십시오.
    APN 토큰은 이제 1 단계와 동일합니다.

  7. 마지막으로 휴대 전화를 iOS6 (베타 2)로 업그레이드하고 백업을 복원하고 다시 테스트했습니다. 예상대로 토큰은 1 단계의 토큰과 계속 일치했습니다.

이 시점에서 저는 APN 토큰을 다른 장치간에 복제 할 수 없다고 확신합니다. 아마도 이것은 이전 버전의 iOS에서 버그로 발생했을 수 있지만 iOS5 (그리고 아마도 iOS6)가 APN 토큰을 올바르게 처리하고 있다고 확신합니다.


업데이트 (2012 년 8 월)

나는 이것을 추가하지 않았다는 것을 깨달았습니다. 장치 토큰 변경됩니다. Apple 개발자 중 한 명이 토큰이 실제로 만료된다는 사실을 공유했습니다 (2 년 후). 많은 목적을 위해 이것은 불변으로 생각할 수있을만큼 충분히 길다.

[특히 매년 휴대폰을 교체하기 때문에 2 년마다 새로운 토큰으로 테스트 스크립트를 업데이트해야하는지 걱정하지 않습니다.]


답변

앱을 다시 설치 하면 iOS9 및 APN 푸시 토큰 변경 사항으로 방금 테스트했습니다 .


답변

, 기기 토큰이 변경 될 수 있습니다.

앱은 토큰을받을 때마다이를 저장해야합니다. 새로운 토큰이 수신 될 때마다 그런 다음, (이 것입니다 서로 다른 경우에 발생, 결국), 저장된 토큰에 새 토큰을 비교 :

  1. 장치의 로컬 저장소를 업데이트합니다 (일 수 있음 nil).
  2. 새 토큰을 인식하기 위해 토큰을 사용하는 장치의 모든 항목을 업데이트합니다.
  3. 이 토큰을 인식하는 API를 새 토큰으로 업데이트하십시오.

실제적으로 마지막 단계는 사소하지 않을 가능성이 가장 높습니다. 당신이 장치에 가입했다고 우편 번호 내용에 따라 토큰 장치에 날씨 경고를 보내는 서비스가있는 경우 예를 들어, 당신은 통과해야 old_token하고,을 new_token은 납기를 업데이트 할 수 있도록했다 서비스.

Ergo는 일반적으로 “장치 토큰”을 수락하는 API의 100 %도 UPDATE해당 토큰을위한 일종의 기능을 가지고 있어야합니다 . 이를 위해 빌드 하지 않는다는 것은 잘못 전달되거나 전달되지 않은 알림 빌드하는 것입니다.


답변

iOS 8 이상에서 기기 토큰이 변경됨

Apple 웹 사이트에서 아래 텍스트를 참조하십시오. 사용자 알림 등록, 예약 및 처리

기기 토큰은 특정 기기의 앱에 푸시 알림을 보내는 데 핵심적인 역할을합니다. 기기 토큰은 변경 될 수 있으므로 앱이 시작될 때마다 다시 등록하고 수신 된 토큰을 서버로 다시 전달해야합니다. 장치 토큰 업데이트에 실패하면 원격 알림이 사용자의 장치에 전달되지 않을 수 있습니다. 장치 토큰은 사용자가 백업 데이터를 새 장치 또는 컴퓨터로 복원하거나 운영 체제를 다시 설치할 때 항상 변경됩니다. 데이터를 새 장치 또는 컴퓨터로 마이그레이션 할 때 사용자는 해당 장치에 원격 알림을 전달하기 전에 앱을 한 번 실행해야합니다.


답변

나는 당신이을 호출 한 후에 토큰이 변경된다는 것을 아무도하지 않았기 때문에 언급 할 가치가 있다고 생각합니다 unregisterForRemoteNotifications. registerForRemoteNotifications다음에 호출 하면 토큰이 다릅니다. Apple 문서에서 이에 대한 확인을 찾지 못했지만 그러한 행동을 직접 목격했습니다. 이것을 명심하십시오


답변

앱이 새 기기로 복원되지 않는 한 변경해서는 안됩니다 (이 시점에서 푸시 알림을 다시 수락하라는 요청을받지 않고 새 토큰을 수락해야하는 시점에 등록 된 호출을 전송합니다).

그러나 Apple은 절대 변경되지 않는다고 보장하지 않습니다 (따라서 문서에 언급되지 않음). 최악의 경우 더 나은 프로그램을 만들고 언젠가는 바뀔 수 있다고 가정합니다. 또한 서버에 토큰을 정기적으로 보내면 한동안 등록되지 않았고 앱을 제거했거나 얼마 전에 관심을 잃었을 가능성이있는 토큰을 제거 할 수 있습니다 (문서에서는이를 원하는 동작으로 지정합니다!).