頭と尻尾はくれてやる!

パソコンおやじのiPhoneアプリ・サイト作成・運営日記


iPhoneで一定時間ごとになにかを処理させるには?

iOSアプリで一定時間ごとになにか処理をさせたい場合はどのようにすればいいのかなあ?と思って見つけたページ。
【iPhoneアプリ】バックグラウンドで定期実行 | RS-Flip-Flop
↑この記事を見て、なるほどVoice over IPアプリのふりをしてかあ、、、記事内にあるようにちゃんとその機能を実装しておかないとリジェクトされるんだろうけど、まあ考えてるのは俺専用アプリだしいいやってことでテストしてみたんだよね。

まあテストといってもapplicationDidEnterBackground:内に下のような記述を追加してちゃんと処理されるか観察していたんだ。
- (void)applicationDidEnterBackground:(UIApplication *)application
{
    [[UIApplication sharedApplication] setKeepAliveTimeout:600.0 handler:^{[self method];}];
}
最初はそれらしく method がコールされるんだけど、、、数時間するとどういうわけかぷっつり起動しなくなってしまうんだよ。
それはまずいなあってことで他の方法をテストしてみたんだけど、それがiOS 7で導入されたBackground Fetch。

Objective-C - Background Fetch を試してみた - Qiita [キータ]

↑とても参考になったページ。あまりにうまくまとまっているから何も書く気がしないやってくらいだよ。

このBackground Fetchでやると完全に(例えば)1時間ごとになにか処理する、というほどの精度はないんだけど、用途によっては使えなくもない。何より安定して動いてくれるしね。


Background Fetchを使ったアプリのスクショ

↑コレはこのBackground Fetchを使った俺専用アプリのスクショ。
起動のタイミングは、UIApplicationBackgroundFetchIntervalMinimumでインターバルを最小にしてる。
起動したらその時間をメモしといて前回より1時間以上経過していればApp StoreのサーバにSearch APIを使って俺アプリの順位を調べて記録してる(そうなんだよ、サーバー問い合わせるために定期実行して欲しかったのよ)。
時間を見ると妙に間隔が空いてるところもあるけど、まあそれなりに動いてくれてるみたい。



<< アプリの順位が上がった時だけ通知してくれるアプリを作ってみた  TopPage  左上って英語でなんて言うの? >>

コメント


管理者にだけ表示を許可する
 

トラックバック

トラックバックURL
http://ringsbell.blog117.fc2.com/tb.php/826-5803b424




Copyright ©頭と尻尾はくれてやる!. Powered by FC2 Blog. Template by eriraha.

FC2Ad