私はアラームアプリケーションに取り組んでいます。アプリがバックグラウンドにある場合、ローカル通知は、アラームが鳴って音を鳴らしていることをユーザーに通知します。ただし、アプリがすでにフォアグラウンドにある場合は、通知音ではなくカスタム音を再生します。通知音を消す方法が見つからないため、両方の音が同時に再生されます。何か案は?
更新:デバイスを再起動すると、問題が解決しました。おそらくiOSのバグです。
私はアラームアプリケーションに取り組んでいます。アプリがバックグラウンドにある場合、ローカル通知は、アラームが鳴って音を鳴らしていることをユーザーに通知します。ただし、アプリがすでにフォアグラウンドにある場合は、通知音ではなくカスタム音を再生します。通知音を消す方法が見つからないため、両方の音が同時に再生されます。何か案は?
更新:デバイスを再起動すると、問題が解決しました。おそらくiOSのバグです。
アプリが開いていてフォアグラウンドで実行されている場合、デフォルトの動作では、サウンドは再生されず、ユーザーはOSからアラート/バナーを受信しません。次のメソッド(AppDelegateであるクラス内)を介して通知を受け取ることができます。
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
{
NSLog(@"Do something");
}
そして、そこから他のメソッドをトリガーできます。
UILocalNotificationのドキュメントから:
システムが通知を配信するときにアプリケーションが最優先で表示されている場合、アラートは表示されず、アイコンにはバッジが付けられておらず、音も再生されません。ただし、application:didReceiveLocalNotification:は、アプリケーションデリゲートが実装した場合に呼び出されます。UILocalNotificationインスタンスはこのメソッドに渡され、デリゲートはそのプロパティを確認したり、userInfoディクショナリのカスタムデータにアクセスしたりできます。