連絡先やカレンダーに似たエンタープライズアプリケーションに取り組んでいます。アプリケーションがバックグラウンドにある場合でも、カレンダーと連絡先を同期したいのですが。アプリストアに送信するつもりはないので、プライベートAPIも使用するのが良いです。ここで注意してください、私はデバイスを脱獄せずにこれを機能させたかったのです。
すでにここに投稿された同様の質問は、すでに投稿されたスレッドにジェイルブレイクされたデバイスの解決策が提案されているため、この新しいスレッドを作成しています。
連絡先やカレンダーに似たエンタープライズアプリケーションに取り組んでいます。アプリケーションがバックグラウンドにある場合でも、カレンダーと連絡先を同期したいのですが。アプリストアに送信するつもりはないので、プライベートAPIも使用するのが良いです。ここで注意してください、私はデバイスを脱獄せずにこれを機能させたかったのです。
すでにここに投稿された同様の質問は、すでに投稿されたスレッドにジェイルブレイクされたデバイスの解決策が提案されているため、この新しいスレッドを作成しています。
これは他の人を助けるかもしれないので、私は自分の質問に対する答えを共有しています
手順:
static int counter;
- (void)applicationDidEnterBackground:(UIApplication *)application
{
//Minimun keepAliveTimeout is 600 seconds
[[UIApplication sharedApplication] setKeepAliveTimeout:605 handler:^{
//do your task
counter ++;
NSLog(@"Counter # %d", counter);
}];
}
ここでは、たとえば、指定された時間間隔でカウンター変数を出力しています。以下は出力ログメッセージです。
2012-08-27 14:06:09.216 BackgroundApplicationForVOIP[1129:207] Counter # 1
2012-08-27 14:16:14.218 BackgroundApplicationForVOIP[1129:207] Counter # 2
2012-08-27 14:26:19.219 BackgroundApplicationForVOIP[1129:207] Counter # 3
2012-08-27 14:36:24.220 BackgroundApplicationForVOIP[1129:207] Counter # 4
2012-08-27 14:46:29.221 BackgroundApplicationForVOIP[1129:207] Counter # 5
2012-08-27 14:54:21.000 BackgroundApplicationForVOIP[1129:207] Counter # 6
2012-08-27 15:19:48.099 BackgroundApplicationForVOIP[1129:207] Counter # 7
2012-08-27 15:26:03.201 BackgroundApplicationForVOIP[1129:207] Counter # 8
2012-08-27 15:39:50.167 BackgroundApplicationForVOIP[1129:207] Counter # 9
2012-08-27 16:07:28.112 BackgroundApplicationForVOIP[1129:207] Counter # 10
2012-08-27 16:13:43.217 BackgroundApplicationForVOIP[1129:207] Counter # 11
2012-08-27 16:23:48.218 BackgroundApplicationForVOIP[1129:207] Counter # 12
2012-08-27 16:33:53.219 BackgroundApplicationForVOIP[1129:207] Counter # 13
2012-08-27 16:43:58.220 BackgroundApplicationForVOIP[1129:207] Counter # 14
2012-08-27 16:54:03.221 BackgroundApplicationForVOIP[1129:207] Counter # 15
これがエンタープライズアプリであり、Appleに提出していない場合は、アプリにVOIPアプリとしての識別を持たせることを検討します。次に、keepAliveTimerを設定し、バックグラウンドで定期的な処理時間を取得して、必要な処理を実行できます。
継続的に実行したい場合は、Info.plistの必須バックグラウンドモードで「オーディオ」を有効にし、実行を継続するまでサイレントmp3をループし続けることもできます。