我在项目中使用了 FCM,它能够在 Sony Xperia、Galaxy S6、Motorola 等设备上正常运行。但是在 Galaxy S3 上出现了 "java.io.IOException: SERVICE_NOT_AVAILABLE" 错误。Galaxy S3 的时间是自动同步的,并且 Google Play 已经更新。网络连接强度也很好,我没有使用代理连接到公共互联网。
当设备无法注册到Firebase时,会出现此错误。确保在调用此代码时互联网正常工作。并将代码放在try-catch块中,以防止应用程序崩溃。
编辑: 要么在注册设备或获取令牌之前添加一个互联网连接检查。 或者 将获取令牌的代码放在try-catch块中,以防止应用程序崩溃。
示例:
1. 添加互联网连接检查代码:请确保您已经在重写的 onComplete 方法中包含如下代码 -
task.isSuccessful()
如果在注册FCM令牌时发生网络错误或其他问题,您可能会收到FIS_Authentication_Failed或SERVICE_NOT_AVAILABLE类型的错误提示。FirebaseMessaging.getInstance().getToken() .addOnCompleteListener(new OnCompleteListener() {
@Override public void onComplete(@NonNull Task<String> task) { if(task.isSuccessful()) { fcmToken = task.getResult(); } } });
请检查以下内容:
1- 网络连接是否正常
2- 手机日期/时间是否正确
Google Mobile Services
应用程序上。清除其数据后,问题消失了。import messaging from '@react-native-firebase/messaging';
React.useEffect(() => {
// Get the token
const token = await messaging().getToken();
// other messaging operations
}, [messaging])
Fatal Exception: com.google.android.gms.tasks.RuntimeExecutionException java.io.IOException: SERVICE_NOT_AVAILABLE
。因此,我的问题是如何防止应用程序因此错误而崩溃? - Stella