Xamarin.iOS 应用程序未运行时未处理 Amazon SNS 推送通知

Posted

技术标签:

【中文标题】Xamarin.iOS 应用程序未运行时未处理 Amazon SNS 推送通知【英文标题】:Amazon SNS push notifications not handled when Xamarin.iOS app not running 【发布时间】:2014-10-17 13:30:23 【问题描述】:

我正在 Xamarin 中开发一个 ios 应用程序,它需要通过 Amazon SNS 从我们现有的后台接收推送通知。

目前我正在使用亚马逊网页将测试通知发送到 APNS_SANDBOX。

我已经编写了代码并为 iOS 应用程序创建了证书,并且在应用程序运行时一切正常。但是,当应用程序处于后台或根本未加载时,iOS 设备不会收到任何通知。

在 Xamarin Studio 的项目选项中,我在后台模式下启用了以下功能 启用后台模式、后台获取、远程通知。 在 iOS 设备的常规设置中,后台应用刷新已在全局范围内为应用启用。

我想我一定错过了配置或苹果证书中的一些非常基本的东西,但我不知道是什么。

【问题讨论】:

【参考方案1】:

在阅读了各种 iOS/Objective C 问题的各种解决方案后,我设法找到了解决方案。正是这个特别的question 让我朝着正确的方向前进。 在 iOS 8.0 上运行时订阅推送通知的代码存在问题

我的原始代码:

    public static void Subscribe()
    
        if (UIDevice.CurrentDevice.SystemVersion [0] >= '8')
        
            UIApplication.SharedApplication.RegisterForRemoteNotifications()
        
        else
        
            UIRemoteNotificationType notificationTypes = UIRemoteNotificationType.Alert | UIRemoteNotificationType.Badge | UIRemoteNotificationType.Sound;
            UIApplication.SharedApplication.RegisterForRemoteNotificationTypes (notificationTypes);
        
    

我的新代码:

    public static void Subscribe()
    
        if (UIDevice.CurrentDevice.SystemVersion [0] >= '8')
        
            UIUserNotificationType types = UIUserNotificationType.Badge | UIUserNotificationType.Sound | UIUserNotificationType.Alert;
            UIUserNotificationSettings settings = UIUserNotificationSettings.GetSettingsForTypes (types, null);
            UIApplication.SharedApplication.RegisterUserNotificationSettings (settings);
        
        else
        
            UIRemoteNotificationType notificationTypes = UIRemoteNotificationType.Alert | UIRemoteNotificationType.Badge | UIRemoteNotificationType.Sound;
            UIApplication.SharedApplication.RegisterForRemoteNotificationTypes (notificationTypes);
        
    

此更改现在允许在应用处于后台或未运行时正确接收通知。

【讨论】:

以上是关于Xamarin.iOS 应用程序未运行时未处理 Amazon SNS 推送通知的主要内容,如果未能解决你的问题,请参考以下文章

FBSDKLoginManager logInWithReadPermissions:fromViewController:处理程序:应用程序首次运行时未调用完成

冷启动 iOS 14 时未处理 iOS Firebase 动态链接

Cordova / Ionic:在设备上模拟或运行时未处理 $http 请求

在真实设备模式下模拟或运行时未处理 http 请求,但在模拟器上运行良好

通过命令提示符运行python程序时未找到模块错误

使用 AvalonDock 2.0 时未处理的“System.ComponentModel.Win32Exception”