我正在为我的 React Native 应用程序实现 Firebase Cloud Messaging 通知。对于Android,通知效果很好,但是,对于ios,我遇到了错误无法获取令牌,服务器请求太多。这是我用于获取FCM令牌+请求用户通知权限的代码片段
const getFcmToken = async () => {
let fcmToken = await AsyncStorage.getItem("fcmToken");
console.log("fcmToken", fcmToken);
if (!fcmToken) {
try {
fcmToken = await messaging().getToken();
if (fcmToken) {
// user has a device token
await AsyncStorage.setItem("fcmToken", fcmToken);
}
} catch (err) {
console.log("Unable to get messaging token.", err);
}
}
};
export async function requestUserPermission() {
const authStatus = await messaging().requestPermission();
const enabled =
authStatus === messaging.AuthorizationStatus.AUTHORIZED ||
authStatus === messaging.AuthorizationStatus.PROVISIONAL;
if (enabled) {
getFcmToken();
} else {
console.log("not enabled");
}
}
打开应用时,通知权限正常,只是获取FCM Token失败。请帮我解决这个问题。
我遇到了类似的问题,我的应用程序成功检索了 Android 设备的 FCM 令牌,而 iOS 则响应了“服务器请求太多”错误。 我通过从 iOS 应用程序的 Firebase 控制台重新下载
GoogleService-Info.plist
文件解决了这个问题。
我不知道为什么,但我的 API 密钥似乎已被阻止或无效。重新下载GoogleService-Info.plist
文件后,API 密钥已更新,一切都重新开始工作。
将GoogleService-Info.plist
添加到 React Native 项目的步骤可以在 React Native Firebase 文档的
入门部分找到,您可以在其中设置 iOS 凭据。 希望这有帮助。
要修复此问题,我必须添加 Firebase Installations API,因为该 API 使用 FID(Firebase 安装 ID)来确定消息传递的目标设备。
Firebase 安装服务 (FIS) 为每个已安装的 Firebase 应用实例提供 Firebase 安装 ID (FID)。
还有
Firebase Cloud Messaging 使用 Firebase 安装 ID 来定位消息传递的目标设备。
我启用的所有API如下: