1

私は目覚まし時計アプリケーションに取り組んでおり、ローカル通知を使用してアラームを鳴らしています。また、ユーザー設定でユーザーが設定した時間間隔に従ってアラームをスヌーズする必要があります。

ユーザーは、アプリケーションが起動するまでスヌーズできません。つまり、後述のメソッドが呼び出されます。

-(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification

firedate に時間間隔を追加し、ローカル通知のスケジュールを変更して、アラームをスヌーズするメソッドを呼び出しているためです。

問題は、アプリケーションがフォアグラウンドになり、Apple の HIG によると、アプリを終了したり、アプリをバックグラウンドに自動的に送信したりしないため、ユーザーはホームボタンを押してアプリをバックグラウンドに送信する必要があることです。

最近、このアプリに出会いました。思い通りにアラームをスヌーズできます。

もう 1 つの問題は、このアプリのマイ ミュージック ライブラリから再生するサウンドを選択できることです。

このアプリがどのようにそうすることができるか考えていますか?

4

1 に答える 1

0

考慮すべきことがいくつかあります。あなたの使い方UILocalNotificationは正しいので、良いスタートです。

「スヌーズ」機能を適切に実装するには、アプリがフォアグラウンドとバックグラウンドの両方で実行されていることを考慮する必要があります。

  • アプリがフォアグラウンドにある場合 (またはユーザーが外部の通知バナーからアプリを開いた場合)application:didReceieveLocalNotification:が呼び出され、UI を更新してスヌーズ ボタンを表示し、NSUserDefaults からロードされた期間から新しいローカル通知をスケジュールするだけです。
  • アプリがバックグラウンドにあり、ユーザーが通知を閉じた場合、後でアラームを「スヌーズ」しようとする方法はありません。

iTunes ライブラリからのカスタム サウンドの再生については、UILocalNotificationsoundNameのプロパティを参照してください。

于 2013-04-11T05:40:34.927 に答える