prosource

FCM 토큰은 언제 만료됩니까?

probook 2023. 6. 17. 09:28
반응형

FCM 토큰은 언제 만료됩니까?

FCM 토큰은 언제 만료됩니까?6개월인가요?

하지만 그것은 만료되지 않습니다.다음 중 하나가 발생하면 자동으로 갱신됩니다.

https://firebase.google.com/docs/cloud-messaging/android/client 에 따르면:

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

토큰 생성 모니터링

새 토큰이 생성될 때마다 onTokenRefresh 콜백이 실행되므로 get을 호출합니다.컨텍스트의 토큰은 사용 가능한 현재 등록 토큰에 액세스할 수 있도록 합니다.매니페스트에 서비스를 추가했는지 확인한 다음 get을 호출합니다.onTokenRefresh 컨텍스트에서 토큰을 생성하고 다음과 같이 값을 기록합니다.

@Override
public void onTokenRefresh() {
    // Get updated InstanceID token.
    String refreshedToken = FirebaseInstanceId.getInstance().getToken();
    Log.d(TAG, "Refreshed token: " + refreshedToken);

    // If you want to send messages to this application instance or
    // manage this apps subscriptions on the server side, send the
    // Instance ID token to your app server.
    sendRegistrationToServer(refreshedToken);
}

편집

onTokenRefresh()는 이제 더 이상 사용되지 않습니다.대신 onNewToken()을 사용해야 합니다.

여기 설명서에 명시된 대로 토큰은 만료되지 않으며 특정 이벤트에서만 변경됩니다.새 토큰이 생성될 때마다 TokenRefreshId의 메서드가 호출됩니다.이를 구현하려면 Firebase를 확장하는 클래스를 만듭니다.InstanceIdService 및 onRefresh를 재정의합니다.토큰은 다음과 같습니다.

public class MyFirebaseInstanceIDService extends FirebaseInstanceIdService {
    @Override
    public void onTokenRefresh() {
        // Get updated InstanceID token.
        String refreshedToken = FirebaseInstanceId.getInstance().getToken();
        Log.d(TAG, "Refreshed token: " + refreshedToken);

        // If you want to send messages to this application instance or
        // manage this apps subscriptions on the server side, send the
        // Instance ID token to your app server.
        sendRegistrationToServer(refreshedToken);
    }
}

또한 이 서비스를 매니페스트에 등록하는 것도 잊지 마십시오.

<service
    android:name=".MyFirebaseInstanceIDService">
    <intent-filter>
        <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
    </intent-filter>
</service>

Firebase admin을 사용하여 다음 작업을 수행할 수 있습니다.

async function isValidDeviceToken (deviceToken) {
  const {
    results: [notifResult]
  } = await firebaseAdmin.messaging().sendToDevice(
    deviceToken,
    {
      notification: {
        title: 'Device Registration',
        message: 'Your device has been registered.'
      }
    },
    {
      dryRun: true
    }
  );

  // returns true if valid, false if not.
  return !notifResult.error;
}

그것이 하는 일은 제공되는지 여부를 확인하는 것입니다.deviceToken현장 뒤에서 소방본부 관리자가 확인하는 것은 유효합니다.deviceToken등록되었습니다.등록되지 않은 경우 다음 오류가 반환됩니다.

{
  error: FirebaseMessagingError: The provided registration token is not registered. A previously valid registration token can be unregistered for a variety of reasons. See the error documentation for more details. Remove this registration token and stop using it to send messages.
      at FirebaseMessagingError.FirebaseError [as constructor] (/Users/aprilmintacpineda/projects/my-app/node_modules/firebase-admin/lib/utils/error.js:44:28)
      at FirebaseMessagingError.PrefixedFirebaseError [as constructor] (/Users/aprilmintacpineda/projects/my-app/node_modules/firebase-admin/lib/utils/error.js:90:28)
      at new FirebaseMessagingError (/Users/aprilmintacpineda/projects/my-app/node_modules/firebase-admin/lib/utils/error.js:256:16)
      at Function.FirebaseMessagingError.fromServerError (/Users/aprilmintacpineda/projects/my-app/node_modules/firebase-admin/lib/utils/error.js:289:16)
      at /Users/aprilmintacpineda/projects/my-app/node_modules/firebase-admin/lib/messaging/messaging.js:105:63
      at Array.forEach (<anonymous>)
      at mapRawResponseToDevicesResponse (/Users/aprilmintacpineda/projects/my-app/node_modules/firebase-admin/lib/messaging/messaging.js:101:26)
      at /Users/aprilmintacpineda/projects/my-app/node_modules/firebase-admin/lib/messaging/messaging.js:370:24
      at processTicksAndRejections (node:internal/process/task_queues:94:5)
      at async isValidDeviceToken (/Users/aprilmintacpineda/projects/my-app/test.js:13:7) {
    errorInfo: {
      code: 'messaging/registration-token-not-registered',
      message: 'The provided registration token is not registered. A previously valid registration token can be unregistered for a variety of reasons. See the error documentation for more details. Remove this registration token and stop using it to send messages.'
    },
    codePrefix: 'messaging'
  }
}

언급URL : https://stackoverflow.com/questions/41982619/when-does-a-fcm-token-expire

반응형