1

私のアプリでは、ローカル プッシュ通知を 30 分ごとに送信したいと考えています。1 つの方法は、構成して起動するだけlocal push notificationです。ただし、ユーザーが時間を変更して 30 分進める可能性があります。このようにして、チートを行うことができます。

通知が 30 分後にのみ発生するようにアプリを構成したいと考えています。どうやってやるの。私のアプリはサーバーと通信し、そのタイムスタンプを取得できますが、サーバー リソースをあまり使用しないことをしたいと考えています。

4

1 に答える 1

0

システムクロックを変更しているユーザーを検出するために私が考えることができる唯一の方法は次のとおりです。

  1. アプリが起動したら、サーバーに時間を尋ねて、それと の違いに注意してください[NSDate date]。それを持続する[NSNumber numberWithFloat:serverOffset];
  2. - (BOOL)deviceClockChangedサーバーに再度要求し、永続化された値と比較するようなメソッドを実装します。差が、クロック ドリフト + 同期要求の遅延の小さな許容範囲よりも大きい場合は、クロックが変更されたと結論付けることができます。このすべてを UTC で実行して、タイム ゾーン間のユーザーの移動とは無関係に機能するようにします。
  3. これを考慮してください: ユーザーが通知を遅らせるために時間についてアプリをだますことをひどく望んでいる場合、彼の電話の残りの部分を台無しにします。おそらく、通知スケジュールを編集できるようにする必要があります。

必要に応じて、ポイント 1 と 2 のコード例を提供できます。また、必要に応じて、ポイント 3 に @"alert text" を提供して、ユーザーが自分の通知を編集することに罪悪感を抱かせるようにすることもできます。

ここで私の元の答え。ユーザーが通知を編集できるようにすることを選択した場合、これらのメソッドが重要になります... UIApplication には次のプロパティがあります。

NSArray *scheduledLocalNotifications;

および実装:

- (void)cancelLocalNotification:(UILocalNotification *)notification

したがって、1 つを変更するには、キャンセルしてから再スケジュールします。

于 2013-03-07T16:50:29.697 に答える