Xamarin.iOS集成FCM时调用base引发异常,移除方法后通知无法接收
Xamarin.iOS FCM 注册失败方法异常解决办法
你遇到的Foundation.You_Should_Not_Call_base_In_This_Method异常,根源是重写FailedToRegisterForRemoteNotifications时调用了基类方法,而Xamarin.iOS明确禁止这个方法的基类调用。
解决步骤:
移除基类调用:直接删掉
base.FailedToRegisterForRemoteNotifications(application, error);这行代码,异常即可消除。修改后的方法示例:public override void FailedToRegisterForRemoteNotifications(UIApplication application, NSError error) { // 在这里添加自定义错误处理,比如记录日志 Console.WriteLine($"远程通知注册失败: {error.LocalizedDescription}"); }补全通知接收逻辑:移除方法后能获取令牌但收不到通知,需检查以下关键配置:
- 确保
RegisteredForRemoteNotifications正确传递APNs令牌给FCM:public override void RegisteredForRemoteNotifications(UIApplication application, NSData deviceToken) { Messaging.SharedInstance.ApnsToken = deviceToken; // 可选:将令牌上传至你的业务服务器 } - 完善
DidReceiveRemoteNotification的通知处理逻辑:public override void DidReceiveRemoteNotification(UIApplication application, NSDictionary userInfo, Action<UIBackgroundFetchResult> completionHandler) { Messaging.SharedInstance.AppDidReceiveMessage(userInfo); // 根据通知内容做自定义业务处理 completionHandler(UIBackgroundFetchResult.NewData); }
- 确保
额外验证:确认项目已正确配置FCM的plist文件,且在Capabilities中开启了推送通知权限。
内容的提问来源于stack exchange,提问作者Raj
相关产品推荐
相关产品推荐

