タイマーを持ち、サーバーからデータを取得するモノタッチアプリケーションがあります。データを受信したら、ステータス バーに通知を表示したいと考えています。アプリがフォアグラウンドにあるときは問題なく動作します。アプリがバックグラウンドの場合、タイマーも通知も機能しません
この問題を修正するのを手伝ってください。
タイマーを持ち、サーバーからデータを取得するモノタッチアプリケーションがあります。データを受信したら、ステータス バーに通知を表示したいと考えています。アプリがフォアグラウンドにあるときは問題なく動作します。アプリがバックグラウンドの場合、タイマーも通知も機能しません
この問題を修正するのを手伝ってください。
アプリをバックグラウンドで実行するのは簡単です。info.plistに場所の更新用のアプリレジスタを追加し、場所を大幅に変更するためのCLlocationシングルトンレジスタを作成します。これで、場所が大幅に変更されるたびにアプリが復活します。
私はこれを次のように機能させました:(良いデザインではありませんが、機能するものです) info.plist に位置情報サポートを追加し、clocation マネージャーを作成し、位置情報サービスを要求し続けました。同じループ スケジュールで UIlocalnotification .
それは完全に機能します。:)
注: 1 つの問題は、ユーザーに「このアプリはあなたの位置情報を使用しています。許可しますか?」というプロンプトを表示することです。
iOS アプリが一時停止 (バックグラウンド) 状態に移行すると、タイマーが停止し、locl 通知が無効になります (さらに、メモリ最適化関連のアクションが実行されます)。アプリがバックグラウンドにあるときにユーザー アラートを表示するための可能な解決策 (JB のみ) は、サーバー (アプリがバックグラウンドになることに悩まされない真の UNIX サーバー!) を実行し、文書化されていない CFUserNotificationDisplayAlert() 関数を使用することです (Google で検索するだけです)。 )。
バックグラウンドで猶予期間をリクエストすることで、アプリの寿命を少し延ばすことが最善の方法です。この期間中にこのメッセージを受け取る限り、通知を投稿することができます。
これを行うには、UIApplication.BeginBackgroundTask を呼び出します。これにより、少し実行できるようになり、渡したメソッドが猶予期間が切れる直前に呼び出されます。
位置更新用のレジスタを備えたアプリがある場合、重要な位置の変更を取得し、領域の開始/終了を取得するため、アプリは常にある程度バックグラウンドで実行されているように見えるため、アプリはコードを実行しているか、ウェイクアップされていますコードを実行します...問題は、UILocalnotificationがサウンドとアラートを一貫してトリガーしないことです(ただし、すべての呼び出しが通知センターに表示されます...)ここでの大きな問題は、重要な場所が変更され、Enter /ユーザーに確実に通知できない場合、出口領域は役に立ちません.... CFUserNotificationDisplayAlert() は、ユーザーにアラートをトリガーする唯一のソリューションです...? それは動作しますか?アプリを使用すると拒否されますか?