IPhone用の目覚まし時計アプリを作って、ユーザーが目覚ましの時間や音を設定できるようにしました。その際に、UILocalNotificationを使用してアラームを開始しました。
ここで、UILocalNotificationで、最初にオプション「閉じる」と「表示」のある通知アラートを取得します。ユーザーが[表示]をタップすると、私のデリゲートはapplication:didReceiveLocalNotification:
メッセージとアラーム音が再生されます。
しかし、システムネイティブのアラームアプリでは、通知アラートは表示されません。アラーム音を直接再生します。アプリでこの動作を使用するにはどうすればよいですか?
私はデビッドに同意します。 iOS内蔵のアラームアプリは、Appleから特別な扱いを受け、バックグラウンドで30秒以上鳴ります。プライベートAPIを使用している場合でも、長時間鳴らすようです。はバックグラウンドにあるか、閉じています。これは、Apple以外で構築された他のアプリでは利用できないため、競合しないでください。AppStoreですべての目覚まし時計アプリ(別名:Apple承認)を購入して、それらを1つずつ見ると、組み込みのアラームアプリの背後に、アラームの最も重要な機能が不足していることがわかります。つまり、「アプリの状態(アクティブ、バックグラウンド、またはクローズ)がどの状態であっても、長期間鳴る」 」
バックグラウンドアラームをシミュレートする最善の方法は、UILocalNotificationを30秒間使用することです。本当に眠りを覚ます場合は、5番目の通知が終了する前に目覚めることを期待して、これらの通知のうち5つを60秒間隔で起動するようにスケジュールしてください。
この方法では、アラームを逃したユーザーが目覚めると画面に5つのポップアップが表示されることに注意してください(アラームポップアップの1つで目覚める場合を除く)。そのため、朝の終わりの最初の1秒間を費やすことになります。これらのポップアップ-最高のユーザーエクスペリエンスではありません。
結論:目覚まし時計アプリは、フォアグラウンドでの使用にのみ適しています。どんな状態でも機能するベストアラームアプリは、アップル製の組み込みの時計アプリです。
このアラーム動作はiOSアプリでは使用できません。ローカル通知を作成してサウンドを追加することができますが、サウンドの長さが制限されています。内蔵アラームなどの連続音は鳴りません。
1つのオプションは、アラートを繰り返すことです。したがって、アプリはアラートを送信し、しばらく待ってから別のアラートを送信します。指定した回数、またはユーザーがアプリを操作するまで繰り返します。これは優れたユーザーエクスペリエンスを提供するとは思わないので、お勧めしません。
私はあなたがあなた自身のカスタムローカル通知音を持つことができるとかなり確信しています。
コード例localNotif.soundName = @"alarmsound.caf";
ローカル通知音を再生するには、30秒以下である必要があります。あなたはもっと得ることができます ここで情報 。
「オーディオ、AirPlay、Picture in Picture」および「リモート通知」のバックグラウンドモードを有効にすると、サイレントプッシュ通知を使用してデバイスを起動し、オーディオの再生を開始できます。通常のように通知に応答するために30秒に制限されません。これは、ユーザーがアプリを手動で強制終了した場合は機能しませんが、ユーザーが強制終了した場合は、ローカル通知を送信してアプリを再度開くように求めることができます。