创建检查远程服务器的推送或后台服务

时间:2016-11-08 18:48:29

标签: c# ios xamarin push-notification backgrounding

我需要的一般概念:

我正在将一个Android应用程序移植到iOS(使用Xamarin,但我可以很容易地从目标C转换为C#),它在很大程度上依赖于AlarmManager对我不拥有的网站上的HTML页面进行背景检查。 AlarmManager本质上是Android的任务调度程序。用户可以将频率设置为他们想要的频率。

我尝试了什么:

背景提取:

app.SetMinimumBackgroundFetchInterval(240);
 UNUserNotificationCenter.Current.RequestAuthorization(UNAuthorizationOptions.Alert, (approved, err) =>
 {
 // Handle approval
 });
 UNUserNotificationCenter.Current.Delegate = new WEBSITEFUNCTIONS.UserNotificationCenterDelegate();
 return base.FinishedLaunching(app, options);


    public override void PerformFetch(UIApplication application, Action<UIBackgroundFetchResult> completionHandler)
    {

        System.Diagnostics.Debug.WriteLine("interval");
        WEBSITEFUNCTIONS kf = new WEBSITEFUNCTIONS();
        kf.doCheck();
        completionHandler(UIBackgroundFetchResult.NewData);
    }

执行Fetch只是直接调用从不调用。我需要一些一致性(一分钟关闭没什么大不了的......但几个小时不会这样做)。我让它运行,直接上升从未奏效。我已经阅读了很多关于PerformFetch如何工作的内容,我认为它不会给我提供用户所需的关键响应时间。

UserNotifications: iOS 10的新功能是能够重复通知。但是,这会重复相同的通知。

var trigger = UNTimeIntervalNotificationTrigger.CreateTrigger(60, true);

            var requestID = "sampleRequest";
            var request = UNNotificationRequest.FromIdentifier(requestID, content, trigger);

            UNUserNotificationCenter.Current.AddNotificationRequest(request, (err) =>
            {
                if (err != null)
                {
                    // Do something with error...
                }
            });

推送提醒:

我自己的服务器

我可以设置一个执行检查的服务器,然后向Firebase Cloud Messaging发送一条消息,向用户发送有关新项目的消息。我在Android版本上有大约500个活跃用户,如果他们每5分钟检查5个不同的页面,每次检查90 kbs,这大约是每小时一半的带宽。

所以缺点是:

  • 过多的带宽使用将使我的家庭互联网 慢很多
  • 我需要自己确保
  • 停电有时会持续数天,让最终用户不在环路中
  • 他们的服务器可以在任何给定的情况下启动我的机器 那一刻,如果发生这种情况,我可以从我的ISP获得一个新的IP地址......假设他们允许

使用我的共享托管,每15分钟设置一次cronjob

我可以设置一个cronjob每15分钟发一次警报。它不是最快的,但比依赖第一个选项更好(因为它直接上升永远不会被调用)

  • 再一次,我怜悯他们的服务器不会让我失望。如果他们这样做,应用程序会完全中断。
  • 共享主机可能会因为对服务器施加太多压力而让我失望(Hostgator声称无限带宽,我不确定他们是否喜欢我这样做)

0 个答案:

没有答案