didReceiveRemoteNotification

didReceiveRemoteNotification

因此,我正在Xamarin iOS中开发一个应用程序,它要求发送推送通知以偶尔更新离线同步数据。但是,似乎DidReceiveRemoteNotification函数仅在应用程序位于前台时运行!

我了解如果关闭该应用程序将无法正常运行,但在后台运行时应该可以正常运行吗?该文档似乎也支持这一点。通过我自己的研究,我可以看到本机苹果代码具有两个不同的DidReceiveRemoteNotification函数(didReceiveRemoteNotification和didReceiveRemoteNotification:fetchCompletionHandler),后者用于处理后台推送。我真的很固执,因为似乎所有内容都暗示它应该调用它,但事实并非如此。

这是我的功能:

public override async void DidReceiveRemoteNotification(UIApplication application, NSDictionary userInfo, Action<UIBackgroundFetchResult>
 completionHandler)

{

        Debug.WriteLine($"Notifcation Received - {userInfo.ToString()}");

        //Call to an empty Azure function to prove it is being called!
        //This allows me to check whether or not this code is eecuted without breakpoints in VS

         using (HttpClient client = new HttpClient())
            await client.GetAsync(FUNCTION_URL);


        //.. My code to pull latest data here

        completionHandler(UIBackgroundFetchResult.NewData);
}

我要发送的内容很简单:
“{\” aps \“:{\” content-available \“:1}}”;

后台模式也在info.plist中设置

谁能指出我正确的方向?谢谢!

最佳答案

所以我自己找到了答案。事实证明,IOS 11对于无声推送通知非常不利!

我使用的是iOS 11.1.x版本,但根本无法使用,我将手机升级到了iOS 11.2.5,现在可以正常使用了。

按预期方式调用了DidReceiveRemoteNotification函数,并且正在后台检索数据!

如果其他任何人在本机或xamarin应用程序中都遇到此问题,请检查您的iOS版本!

关于c# - 未在后台调用DidReceiveRemoteNotification-Xamarin iOS-推送通知,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48840361/

10-12 05:18