私が必要とするものの一般的な考え:
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 は無制限の帯域幅を主張していますが、彼らが私にそうしてほしいかどうかはわかりません)