FCM 토큰은 언제 만료됩니까?
FCM 토큰은 언제 만료됩니까?6개월인가요?
하지만 그것은 만료되지 않습니다.다음 중 하나가 발생하면 자동으로 갱신됩니다.
https://firebase.google.com/docs/cloud-messaging/android/client 에 따르면:
- - 앱이 인스턴스 ID를 삭제합니다.
- - 앱이 새 장치에 복원됩니다.
- -사용자가 앱을 제거/재설치합니다.
- -사용자가 앱 데이터를 지웁니다.
토큰 생성 모니터링
새 토큰이 생성될 때마다 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
'prosource' 카테고리의 다른 글
에서 종속성 주입을 사용하려면 어떻게 해야 합니까?NetCore 작업 필터 특성? (0) | 2023.06.22 |
---|---|
오라클 jdbc 드라이버 버전 광기 (0) | 2023.06.22 |
_mm_malloc을 사용하는 이유는 무엇입니까?( _aligned_memalign, alligned_alloc 또는 posix_memalign과는 반대) (0) | 2023.06.17 |
R 프로그래밍:오일러의 번호는 어떻게 알 수 있습니까? (0) | 2023.06.17 |
malloc()로 할당한 메모리보다 더 많은 메모리를 사용할 수 있는데, 그 이유는 무엇입니까? (0) | 2023.06.17 |