UILocalNotification
アプリが実行されていない場合にユーザーに警告し、MPMusicPlayerController
iPod の音楽MPMoviePlayerController
を再生し、ラジオ ストリームの URL を再生するために使用しています。
Apple doc によると: iPhone がロックされ、デバイスがローカル通知を受信した場合、30 秒間のサウンドが再生され、ユーザーがスライダーをスライドすると、アプリがフォアグラウンドになり、2 つのシナリオが発生します。
アプリが実行されていない場合は、メソッドを呼び出します
(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
アプリがすでに実行されている場合は、メソッドを呼び出します -
(void)application:(UIApplication *)app didReceiveLocalNotification:(UILocalNotification *)notify
これらの方法でタスクを実行できます。
問題 : iPhone がロックされ、ローカル通知が受信され、アプリがフォアグラウンドで実行されているときに、アプリケーションでサウンドを再生できるようにする必要があります (iPod の音楽またはストリーム URL である可能性がありますが、30 秒間はローカル通知音ではありません)。
参考アプリ:「目覚まし時計 HD」やアプリストアにある他のアプリはこの方法で問題なく動作していますが、アプリがバックグラウンドで実行されている場合、これらはアラームを鳴らすことができません (理由がわかりませんでした???)
また、 how-to-prevent-iphone-from-deep-sleepingも試し ました:
サイレントミュージックを定期的に再生することでiPhoneがディープスリープするのを防ぎますが、通知が受信されたことをアプリに通知して「実際の音楽」の再生を開始するにはどうすればよいですか? そして、新しい音楽の再生を開始するにはどうすればよいですか?