programing

파이어베이스의 앱 토큰이 변경되는 기간과 관리 방법은 무엇입니까?

megabox 2023. 6. 13. 22:09
반응형

파이어베이스의 앱 토큰이 변경되는 기간과 관리 방법은 무엇입니까?

저는 소방 기지가 처음이라 걸음마를 배우는 유아처럼 배우고 있습니다.지금까지 저는 파이어베이스 프레임워크를 통해 생성된 토큰을 사용하여 제 전화기로 메시지를 보낼 수 있었습니다.제 생각에는 여기가 까다로워지는 것 같습니다.라는 방법이 있습니다.onTokenRefresh()에서FirebaseInstanceIdService연장 근무리프레시라고 하니까 바뀔 것 같아요.이 토큰은 언제 생성되고 언제 변경되는지 알고 싶습니다.

그리고 만약 그것이 변경된다면, 내가 토큰 'A'가 있는 기기로 메시지를 보낸다고 가정하면, 그것은 현재 오프라인 상태이기 때문에 대기열에 있을 것입니다.이제 장치가 온라인 상태가 되면 토큰을 'B'로 "새로 고칩니다.이제 메시지가 토큰 'A'로 전달되어야 했기 때문에 메시지는 절대 전달되지 않습니다.어떻게 하면 이 상황을 해결할 수 있을까요?

토큰은 앱이 처음 실행된 후 전화기가 Google 서버에 연결되는 즉시 생성됩니다.필요한 연결로 인해 이 작업은 즉시 수행되지 않을 수 있지만 대부분의 경우 사용자가 앱을 연 후 몇 초 이내에 수행됩니다.토큰이 생성되는 즉시 메소드onTokenRefresh()이 호출됩니다.

당신이 지적했듯이 토큰은 바뀔 수 있습니다, 그 경우.onTokenRefresh()메서드가 다시 호출됩니다.
리프레시 이벤트는 왠지 드물어요, 자주 볼 거라고 기대하지 마세요.

새로 고침 토큰이 발생하면 이전 토큰으로 "성공적으로" 전송된 모든 메시지(API가 메시지 ID를 반환함)가 전달됩니다.

마지막으로, 새로 고침이 발생한 후에도 앱이 새 토큰을 백엔드로 전달할 수 있도록 오래된 토큰은 짧은 기간 동안 계속 작동합니다.

앱을 처음 시작할 때 FCM의 sdk는 클라이언트 앱 인스턴스에 대한 등록 토큰을 생성합니다.위에서 말한 것처럼, 그것은 드문 사건입니다.구체적으로 말하면,다음과 같은 경우 등록 토큰이 변경될 수 있습니다.

  • 앱이 인스턴스 ID를 삭제합니다.
  • 앱이 새 장치에 복원됩니다.
  • 사용자가 앱을 제거/재설치합니다.
  • 사용자가 앱 데이터를 지웁니다.

인스턴스 ID는 앱의 인스턴스별 고유 ID를 제공합니다.인스턴스 ID는 타사가 앱의 서버 측 관리 리소스에 액세스할 수 있도록 허용하는 보안 토큰을 생성하는 간단한 API를 제공합니다.인스턴스 ID 서버는 앱이 설치된 장치가 마지막으로 사용된 시간도 알려줄 수 있습니다.우리는 이것을 사용하여 앱에서 데이터를 유지할지 아니면 사용자와 다시 연결하기 위해 푸시 메시지를 보낼지 결정할 수 있습니다.

디바이스 토큰이 변경될 때마다 TokenRefresh() 메서드에 반영됩니다.변경 시 장치 토큰을 얻기 위해 이 메서드를 호출하여 새로 고침된 토큰을 가져올 수 있습니다.

그리고 언제든지 장치 토큰을 얻으려면 Firebase를 사용할 수 있습니다.현재 장치 토큰을 가져오는 InstanceId.getInstance().getToken() 메서드입니다.장치 토큰을 가져오는 데 약간의 시간이 걸립니다.

장치 등록 토큰 액세스에 대한 자세한 내용을 보려면 여기를 클릭하십시오.

  • TokenRefresh()Firebase에서InstanceIdService는 더 이상 사용되지 않습니다.
  • 통화는 또한 사용되지 않는 Firebase입니다.InstanceId.getInstance().getToken()

대신 Firebase Messaging Service에서 NewToken(String Token)재정의해야 합니다.토큰이 변경될 때 이 메서드가 트리거되었습니다.이 방법을 재정의하면 Firebase를 안전하게 제거할 수 있습니다.TokenRefresh()에 포함된 InstanceIdService입니다.

토큰이 변경될 수 있는 시기는?

  • 앱이 인스턴스 ID를 삭제합니다.
  • 앱이 새 장치에 복원됨
  • 사용자가 앱을 제거/재설치
  • 사용자가 앱 데이터 지우기

현재 토큰을 검색하는 방법:

파이어베이스에 전화해서InstanceId.getInstance().getInstanceId():

FirebaseInstanceId.getInstance().getInstanceId()
    .addOnCompleteListener(new OnCompleteListener<InstanceIdResult>() {
        @Override
        public void onComplete(@NonNull Task<InstanceIdResult> task) {
            if (!task.isSuccessful()) {
                Log.w(TAG, "getInstanceId failed", task.getException());
                return;
            }

            // Get new Instance ID token
            String token = task.getResult().getToken();

            // Log and toast
            String msg = getString(R.string.msg_token_fmt, token);
            Log.d(TAG, msg);
            Toast.makeText(MainActivity.this, msg, Toast.LENGTH_SHORT).show();
        }
    });

자세한 내용은 https://firebase.google.com/docs/cloud-messaging/android/client 에서 확인하시기 바랍니다.

특정 발신인 ID(기본 발신인 ID 제외)에 대한 토큰 관리에 대해 여기를 선택합니다.

언급URL : https://stackoverflow.com/questions/37678248/in-what-period-does-the-firebases-app-token-changes-and-how-to-manage-it

반응형