在后台不调用DidReceiveRemoteNotification - Xamarin iOS - 推送通知

时间:2018-02-17 10:30:45

标签: c# ios xamarin.forms xamarin.ios apple-push-notifications

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

据我所知,如果该应用已关闭但它应该可以在后台正常工作吗?文档似乎也支持这一点。通过我自己的研究,我可以看到Native apple代码有两个不同的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);
}

我发送的所有信息都很简单: &#34; {\&#34; aps \&#34;:{\&#34; content-available \&#34;:1}}&#34;;

背景模式也在info.plist中设置

有人能指出我正确的方向吗?谢谢!

1 个答案:

答案 0 :(得分:1)

所以我自己找到了答案。事实证明,IOS 11对于静音推送通知来说非常糟糕!

我使用的是iOS 11.1.x版本而且根本没用,我将手机升级到iOS 11.2.5并且它现在运行良好。

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

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