0

私が必要とするものの一般的な考え:

Android アプリを iOS に移植しています (Xamarin を使用していますが、目的の C から C# に簡単に変換できます)。AlarmManager に大きく依存して、所有していない Web サイトの 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);
    }

Perform Fetch は、決して呼び出されることはありません。ある程度の一貫性が必要です (1 分のずれは大したことではありません... しかし、数時間では不十分です)。私はそれを実行させましたが、まっすぐに機能することはありませんでした。私は 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 でチェックすると、1 時間あたり約 0.5 ギガの帯域幅になります。

したがって、短所は次のとおりです。

  • 過剰な帯域幅の使用により、自宅のインターネットが大幅に遅くなります
  • 自分で確保する必要がある
  • 停電が何日も続く場合があり、エンド ユーザーはループから外れます
  • 彼らのサーバーはいつでも私のマシンから起動することができ、それが起こった場合、ISPから新しいIPアドレスを取得できました...彼らがそれを許可していると仮定します

共有ホスティングを使用して、15 分ごとに cronjob をセットアップします

15 分ごとにアラートを出すように cronjob を設定できます。これは最速ではありませんが、最初のオプションに依存するよりもはるかに優れています (まっすぐに呼び出されることはないため)。

  • 繰り返しますが、私は彼らのサーバーが私を追い出さないことに翻弄されています. これを行うと、アプリは完全に壊れます。
  • 共有ホスティングは、サーバーに過度の負担をかけるため、私を遮断するかもしれません (Hostgator は無制限の帯域幅を主張していますが、彼らが私にそうしてほしいかどうかはわかりません)
4

0 に答える 0