iOS アプリでバックグラウンド フェッチを有効にして、プレゼンス タイムアウトを防ぐために PubNub に時間を与えることを検討しています。
編集- いくつかの背景: 私たちのアプリは、パブナブ チャネルを介してそのジオロケーションをサービスに伝えています。バックグラウンドで位置情報を許可するようにユーザーに要求し、それが許可されると、OS からすでに時折時間を取得しています。プレゼンス機能を使用して、アプリが接続を終了/ドロップしたのか、移動を停止したのかをサービスが認識できるようにしています。ただし、デバイスがバックグラウンドで移動を停止すると、到着した場所から実行時間が得られないため、いずれにせよ pubnub タイムアウトが発生します。
そのバックグラウンド状態を有効にした後、必要があるようです
setMinimumBackgroundFetchInterval
タイムアウトしたくない接続がある場合は、インターバルを指定して呼び出します(タイムアウトNever
しない場合も)。- 実装する
application:performFetchWithCompletionHandler:
ただし、いくつかのことは明らかではありません。
pubnub のタイムアウトに関連して、どのフェッチ間隔を選択する必要がありますか? 指定されたフェッチ間隔は、OS によって必ずしも守られていないようです。一般に、タイムアウトを短くしたかったので、アプリがオフラインになったり強制終了したりしたときに、もう一方の端がそれをすぐに検出します。これは、ハートビートと矛盾しているように見え、不注意によるタイムアウトが発生しないようにします。間隔だけを使用することを検討してい
Minimum
ます。プレゼンス ハートビートが確実に送信されるようにするために、メソッドで何もする必要はないと思います
performFetchWithCompletionHandler
。むしろ、アプリが起動されるという事実だけで、PubNub のタイマーが起動し、すべての処理が行われます。newData
ただし、ハートビート トランザクションの後でのみ完了ブロックを呼び出すことや、いつvs.noData
vs.を返すかを知ることはできますかfailed
。また、毎回すぐに完了を呼び出すだけでnoData
、フェッチ間隔を元に戻す手がかりとして OS に取られるのではないかと心配しています。
または、タイムアウトを防ぐためにこのアプローチに代わる方法を誰かが推奨できる場合は、それをいただければ幸いです。