programing tip

APN 디바이스 토큰은 개별 앱마다 고유합니까?

itbloger 2020. 10. 14. 07:34
반응형

APN 디바이스 토큰은 개별 앱마다 고유합니까?


iTunes 스토어에 두 개의 앱이 있습니다. 둘 다 푸시 알림을 구현합니다. 이러한 프로덕션 앱에 알림을 보내는 것을 테스트하는 동안 앱 A를 대상으로하는 푸시의 제목이 앱 B 인 것을 확인했습니다.

이 두 앱은 모두 동일한 휴대 전화에 설치됩니다. 내 장치 테이블을 살펴본 결과 두 앱에 대해 나열된 장치 토큰 (물론 장치 ID)이 모두 동일하다는 것을 알았습니다.

필요에 따라 서버에서 각 앱에 대해 하나씩 두 개의 다른 인증서를 사용하고 있습니다. 나는 일종의 장치 토큰 또는 인증서가 메시지를 올바른 앱으로 라우팅한다고 가정했지만 분명히 그렇지 않습니다.

NSLog에서 각 앱에서 전송되는 토큰이 실제로 동일하다는 것을 알 수 있습니다.

장치 토큰은 각 앱에 고유해야합니까? 그렇다면 내 테스트 전화가 두 앱에 대해 동일한 장치 토큰을 내 서버로 보내는 방법을 알 수 있습니다. 현재 앱 스토어에있는 두 개의 앱에서 가져온 것입니다.

도움을 주셔서 감사합니다!


참고 : 이것은 iOS <= 6에만 해당되는 오래된 답변입니다 . 현재 접근 방식에 대해서는 user1641761의 답변참조하십시오 .

그것을 알아 냈습니다. 장치 토큰은 전화 앱 페어링에 고유하지 않습니다. 그들은 전화에만 고유합니다. 동일한 휴대폰에 푸시가있는 여러 앱이있는 경우 모두 동일한 장치 토큰을 사용합니다. 알림을 보내는 데 사용하는 인증서에 따라 이동하는 앱이 결정됩니다.


iOS 7은이를 다르게 처리합니다. 지금은 UNIQUE입니다.

이 기사의 포인트 1을 참조하십시오 : http://urbanairship.com/blog/2013/10/03/how-ios-7-handles-push-differently

"iOS 7 이전에는 기기 토큰이 특정 기기의 모든 앱 설치에서 동일했습니다. Tap Tap Revenge 또는 USA Today에 관계없이 휴대 전화의 여러 앱은 동일한 주소 (예 : 기기 토큰)를 사용하여 푸시를 라우팅합니다. 메시지와 쌍을 이루는 보안 자격 증명을 통해 올바른 앱으로 이동할 수 있습니다. iOS 7에서 Apple은 한 단계 더 나아가 모든 앱 설치에서 기기 토큰이 다른지 확인했습니다. 다른 전화 수준 식별자를 제거하여 사용자의 개인 정보를 더욱 보호합니다. "

iOS 7 장치 토큰이 동일한 장치에서 다름을 참조하십시오.


내 이해와 Apple 개발자의 답변을 공유 :

  • 장치 토큰
    • 장치 토큰은 장치의 고유 식별자입니다.
    • APN은 고유 한 장치 인증서를 사용하여 장치 토큰을 생성합니다 (프로비저닝 프로필을 사용할 수 있음).
    • 장치 토큰이 변경 될 수 있습니다. 따라서 매번 업데이트 된 장치 토큰을 서버로 보내야합니다.
    • 기기 토큰은 기기의 모든 앱에 대해 동일합니다.
    • 기기별로 다르며 앱별로 다릅니다.
    • 디바이스 토큰은 샌드 박스와 프로덕션에 따라 다를 수 있습니다.
      • 프로비저닝 프로파일 (샌드 박스 또는 프로덕션)에 따라 APN은 동일한 장치에 대해 샌드 박스 및 프로덕션에 대해 서로 다른 장치 토큰을 생성 할 수 있습니다.
    • 그렇다면 푸시 알림은 장치에서 어떻게 구별됩니까? 어떤 앱입니까?
      • 서버에 설치된 앱 식별자 및 SSL 인증서 (알림이 APN 서버로 푸시 됨)를 기반으로합니다.
  • 참고 문헌

즉, Apple은 적합하다고 판단되는 장치 APNToken을 변경할 권한이 있으므로 장치 / 사용자를 고유하게 식별하는 데 사용하지 마십시오.


푸시 알림을위한 장치 토큰은 앱별로 다릅니다. 특정 장치가 아닙니다. 즉, 장치 토큰은 동일한 장치의 여러 앱에 대해 다르고 고유합니다.

사과에 따르면

원격 알림을 지원하면 앱이 실행 중이 아닌 경우에도 앱 사용자에게 최신 정보를 제공 할 수 있습니다. 원격 알림을 수신하고 처리 할 수 ​​있으려면 앱에서 다음을 수행해야합니다.

  • 원격 알림을 활성화합니다.

  • Apple 푸시 알림 서비스 (APN)에 등록하고 앱별 장치 토큰을받습니다.

  • 알림 공급자 서버에 장치 토큰을 보냅니다.

  • 들어오는 원격 알림 처리를위한 지원을 구현합니다.

앱별 기기 토큰은 전역 적으로 고유하며 하나의 앱-기기 조합을 식별합니다. 앱의 APN에서 장치 토큰을 받으면 공급자에 대한 네트워크 연결을 여는 것은 사용자의 책임입니다. 또한 앱에서 공급자에게 보내려는 다른 관련 데이터와 함께 장치 토큰을 전달하는 것은 사용자의 책임입니다. 공급자가 나중에 APN에 원격 알림 요청을 보낼 때 알림 페이로드와 함께 장치 토큰을 포함해야합니다. 이에 대한 자세한 내용은 APN 개요를 참조하십시오.

앱에서 장치 토큰을 캐시하지 마십시오. 대신 필요할 때 시스템에서 가져옵니다. APN은 특정 이벤트가 발생하면 앱에 새 장치 토큰을 발급합니다. 기기 토큰은 사용자가 백업에서 기기를 복원 할 때, 사용자가 새 기기에 앱을 설치할 때, 사용자가 운영 체제를 다시 설치할 때와 같이 다를 수 있습니다. 캐시에 의존하는 대신 토큰을 가져 오면 공급자가 APN과 통신하는 데 필요한 현재 장치 토큰을 확보 할 수 있습니다. 기기 토큰을 가져 오려고했지만 변경되지 않은 경우 가져 오기 메서드가 빠르게 반환됩니다.

여기에서 Apple 문서를 참조 할 수 있습니다. 로컬 및 원격 알림 프로그래밍 가이드


토큰을 고유 식별자로 사용할 수는 없지만 keygen (iTunes의 도움말)에 저장을 사용하여 이전 토큰을 제거하고 이전 토큰을 삭제하고 데이터베이스에 새 토큰을 추가합니다.

참고 URL : https://stackoverflow.com/questions/2338267/is-the-apn-device-token-unique-to-each-individual-app

반응형