• 締切済み

バックグラウンド処理について(iOS)

お世話になりまくっております。 道玄坂小五郎です。 iOSアプリ開発者用にSDKを作成しているのですが、有料の為、第3者に使われてしまった 場合の対策でとてもてこずっています。 ログインした時にサーバから使用できる残り時間をもらい、それを基にタイマーで管理した いのですが、バックグラウンド処理を調べた結果 ”ios7未満のデバイスだと、電話系、オーディオ系、位置情報系など以外はバックグラウンド 処理が、数秒~10分までしか動かない仕様で、ホームボタンを押しただけで数秒待機状態 になった後、バックグラウンド処理が止まってしまう”事がわかりました。 本来はホームボタンを押した後もずっとタイマーを回して、アプリをフォアグラウンドにする前 にタイマーが切れたら、その後再ログインしないと使えない。 という形にしたいのですが、現状だとホームボタンを押した時にタイマーは止まってしまい、 アプリをフォアグラウンドにする前に有効期限を迎えていても、フォアグラウンドにした時に タイマーが前回の続きから動き出し、残り時間まで使えてしまう状態になっています。 ※オフラインでも使えるようにするという考慮もある為、オンラインで都度確認というのは無し としております。 現在調べようとしている事 ・プッシュ通知機能などで何か対策できないか見ていますが、調べきれてません。 ・タイマー(アラーム)関係のアプリはどうやっているのか。 何か良い案をお持ちの方おりましたら、アドバイスお願いします。 つたない文章ですみません。

みんなの回答

  • t_ohta
  • ベストアンサー率38% (5238/13705)
回答No.2

> iOSのシステム時刻を使用すると、その時間を使用者が(有効な時間に)改ざんできて > しまう為、このサーバから取得した残り時間だけを使って対応したいと思っています。 システム時刻を信用できないという前提ですと、時間を管理することは無理だと思います。 プッシュ通知に関して調べられているようですが、オフラインでも作用できることを前提にされるのであればプッシュ通知はオフラインでは受け取れませんし、そもそもプッシュ通知はアプリから独立したもので、通知内容からアプリの処理にイベントを起こすことができませんので、使えないでしょう。 バックグラウンドに回ったら再認証しないと再開後利用できないとしてしまうか、システム時刻を信じて動作させるしかないと思います。

  • t_ohta
  • ベストアンサー率38% (5238/13705)
回答No.1

タイマーじゃなくて時計を使えばいいのではないでしょうか。 サーバから使用できる残り時間をもらったら現在時刻に残り時間を足して有効期限が切れる時間を算出し、期限切れ時刻と現在時刻を比較すれは問題無いように思えますが。

pekoo39
質問者

補足

回答ありがとうございます。 iOSのシステム時刻を使用すると、その時間を使用者が(有効な時間に)改ざんできて しまう為、このサーバから取得した残り時間だけを使って対応したいと思っています。

関連するQ&A