如何解决@ react-native-firebase /消息未在真实的ios设备中获取设备令牌
我正在使用react-native-firebase v8和react-native v0.61.2。我最近将我的本机版本从0.61升级到0.61.2。在android中,一切正常,但在ios 真实设备中,messagement.getToken()在catch块中抛出错误,而没有获得任何令牌。
错误:
我的FCM服务文件
class FcmService {
register = (onRegister,onNotification,onOpenNotification) =>{
this.checkPermission(onRegister)
// when register function call that time we create notification listener
this.createNoitificationListeners(onRegister,onOpenNotification)
}
registerAppWithFCM = async () => {
if(Platform.OS === 'ios') {
await messaging().registerDeviceForRemoteMessages();
await messaging().setAutoInitEnabled(true);
}
}
checkPermission = (onRegister) => {
messaging().hasPermission()
.then(enabled => {
if (enabled) {
Alert.alert('enabled')
//user has permission
this.getToken(onRegister)
} else {
//user don't have permission
this.requestPermission(onRegister)
}
}).catch(error => {
let err = `check permission error${error}`
Alert.alert(err)
// console.log("[FCMService] Permission rejected",error)
})
}
getToken = async (onRegister) => {
let fcmToken = await AsyncStorage.getItem(Constants.FCM_TOKEN);
if(!fcmToken) {
messaging().getToken()
.then(fcmToken => {
Alert.alert(fcmToken)
if (fcmToken) {
onRegister(fcmToken)
} else {
// console.log("[FCMService] User does not have a device token")
}
}).catch(error => {
let err = `FCm token get error${error}`
Alert.alert(err)
// console.log("[FCMService] getToken rejected ",error)
})
}
else {
}
}
requestPermission = (onRegister) => {
messaging().requestPermission().then(() => {
this.getToken(onRegister)
}).catch(error => {
// console.log("[FCMService] Requested persmission rejected ",error)
})
}
deletedToken = async () => {
await messaging().deleteToken()
.catch(error => {
// console.log("Delected token error ",error)
})
}
createNoitificationListeners = (onRegister,onOpenNotification) => {
messaging().onNotificationOpenedApp(remoteMessage => {
Alert.alert(remoteMessage)
// console.log("[FCMService] onNotificationOpenedApp Notification caused app to open from background state:",remoteMessage);
if(remoteMessage) {
onOpenNotification(remoteMessage)
}
});
// when the application is opened form a quit state
messaging()
.getInitialNotification()
.then(remoteMessage => {
Alert.alert(remoteMessage)
// console.log('[FCMService] getInitialNotification Notification caused app to open from quit state:',remoteMessage);
if (remoteMessage) {
onOpenNotification(remoteMessage)
}
}
);
// Foreground state messages
this.messageListener = messaging().onMessage(async remoteMessage => {
Alert.alert(remoteMessage)
//console.log("[FCMService] A new FCM message arrived",remoteMessage);
if(remoteMessage) {
let notification = null;
if(Platform.OS === 'ios') {
notification = remoteMessage
} else {
notification = remoteMessage
}
onNotification(notification);
}
});
// Triggered when have new token
messaging().onTokenRefresh(fcmToken => {
// console.log("New token refresh: ",fcmToken)
onRegister(fcmToken)
})
}
unRegister = () => {
this.messageListener()
}
}
在App.js
文件中,我调用了该方法
fcmService.registerAppWithFCM();
fcmService.register(this.onRegister,this.onNotification,this.onOpenNotification);
解决方法
您必须使用社区/推送通知ios依赖关系并寻求许可。 使用它我可以解决这个问题
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。