1

アプリを「初めて」インストールしてから 3 日ごと (ビジネス要件) にポップアップ ボックスをユーザーに表示するアプリ (iPad のみ) を開発しています。私はそれを行うためにNSTimerを使用しています。ユーザーがアプリを削除し、3 日前にアプリを再インストールすると、実装が中断されます。この場合、3 日間のカウンターが再始動します。ユーザーが設定から変更できるため、日付を使用することはお勧めできません。

アプリが削除された後も NSTimer (または同様のもの) を実行し続ける方法はありますか?

NSTimer* msgTimer = [NSTimer scheduledTimerWithTimeInterval: 259200 target: self selector: @selector(showMsg:) userInfo: nil repeats: NO];
4

4 に答える 4

7

これを行う唯一の方法は、アプリを閉じるたびに、最後の通知時刻の文字列表現をキーチェーンに保存することです。アプリを削除しても、キーチェーンは消去されません。これは技術的にはキーチェーンの誤用ですが、おそらくうまくいくでしょうし、ストアへの提出に問題があるとは思えません.

アプリが起動されるたびに、前回のインストール以降に起動されたのが初めてかどうかを確認します (この情報をデフォルトに保存します)。初めての場合は、キーチェーンのタイムスタンプを確認し、現在のタイムスタンプと比較して、そこから進みます。

ユーザーがアプリを削除し、翌日にインストールしたとします。キーチェーンを確認すると、23 時間前に削除されていることがわかります。次に、23 時間を引いてタイマーを開始します (したがって、2 日 1 時間で通知​​されます)。すべてが理にかなっていることを願っています。

それ以外の場合、アプリが通常インターネットに接続されている場合は、何らかのサーバーを使用できます。

于 2013-08-01T16:54:35.627 に答える
0

私はそうは思いませんが、間違っている可能性があります (誰かが私を正すことができます)。たとえそれが可能であったとしても、これはこのようなことをする悪い方法のように聞こえます.

このようなことを実現するために、ローカル プッシュ通知を使用するのはどうですか? 状況に最適なようです。

スケジュールされた通知を設定するための関連する Appl ドキュメント

于 2013-08-01T16:47:55.623 に答える
0

iCloud のキー値データストレージを使用して、最初のインストール日を保存することもできます。日付をローカルに保存し、iCloud から同期する場合、ユーザーがインターネットから離れていない限り、更新を回避することは困難です。

もちろん、これはデバイスで iCloud にログインしているかどうかに依存しており、iOS 5 以降が必要です。

于 2013-08-01T17:50:54.390 に答える