12

マルチタスク対応の目覚まし時計アプリを作っています。ただし、sdk のいくつかの制限に悩まされています。

ユーザーが設定したプロパティでアラーム時刻が来るたびに、選択したアラーム音を再生する必要があります。これらのプロパティ: - アラーム音は、ユーザーの iPod ライブラリからの音楽、およびアプリケーション バンドル内のいくつかのサウンド ファイルにすることができます。- アラーム音は、プログレッシブとして再生するように設定できます。

さらに、アラーム音は、ユーザーがアプリをキャンセルまたはウェイクするまで、バックグラウンドでループ再生する必要があります。

私の頭に浮かんだ最初の論理的なことは、ローカル通知を使用することでしたが、ローカル通知を使用すると、アプリバンドル (iPod 音楽ではなく) にのみ含まれ、最大 30 秒の長さのサウンドファイルを再生できます。また、ユーザーが通知アラートをキャンセルしても通知されず、iOS はサウンドの再生を停止するだけです。

現在、バックグラウンドオーディオ再生オプションを使用して、アラーム時間まで無音で再生し、アラーム音を再生しながらローカル通知を音なしで表示することを考えています。しかし、ユーザーがローカル通知アラートをキャンセルしてオーディオの再生を停止したかどうかを知るにはどうすればよいでしょうか。ただし、Apple のドキュメントによると、バックグラウンド オーディオを再生しているアプリでは、iPod の音楽再生 (および共有リソースの使用) はまだ許可されていません。

また、他のアプリがこれらの機能の一部をどのように実行しているのか理解できません。たとえば、Night Stand HD はバックグラウンドで iPod の音楽を再生でき、「プログレッシブ アラーム クロック」という名前のアプリはバックグラウンドでプログレッシブ サウンドを再生できます。

これらの問題に関するアイデアや提案はありますか? あなたの助けは大歓迎です

4

2 に答える 2

4

あなたがやりたいことは、iOSの現在の制限では不可能だと思います. とはいえ、プログレッシブ アラーム クロックの開発者がプロ​​グレッシブ アラームを再生するために行っていることを行うことで、プログレッシブ アラームを偽造できる可能性があります。多くのローカル通知を次々にスケジュールすることによって。彼は、アラーム音をそれぞれ 10 秒程度のチャンクに分割し、それぞれが漸進的な音量レベルに設定されています。これは、プログレッシブ アラームを偽造する方法を示す非常に大雑把な例です。

UILocalNotification *notif1 = [[UILocalNotification alloc] init];
notif1.fireDate = [NSDate dateWithTimeIntervalSinceNow:15];
notif1.soundName = UILocalNotificationDefaultSoundName;
notif1.alertBody = @"Alarm";
[[UIApplication sharedApplication] scheduleLocalNotification:notif1];
[notif1 release];

UILocalNotification *notif2 = [[UILocalNotification alloc] init];
notif2.fireDate = [NSDate dateWithTimeIntervalSinceNow:20];
notif2.soundName = UILocalNotificationDefaultSoundName;
[[UIApplication sharedApplication] scheduleLocalNotification:notif2];
[notif2 release];

これにより、最初に通知が表示され、15 秒後にデフォルトのサウンドが再生されます。さらに 5 秒後に、サウンドが再び再生されます。ボリュームが増加しているサウンド ファイルの束を持つことで、より多くのローカル通知をスケジュールするだけでプログレッシブ サウンドを偽装できます。これはもちろん、プログレッシブ アラーム クロックのベルのように、簡単にチャンクに分割できるアラーム サウンドがある場合にのみ機能します。残念ながら、通知で [キャンセル] をタップしてアラームをキャンセルすることはできません。そのためにはアプリケーションを起動する必要があります。

于 2010-11-16T17:46:20.603 に答える
1

プログレッシブ目覚まし時計の開発者が何をしていても、Robert Höglund が説明していることではありません。電話が無音の場合でもアラームが鳴り、UILocalNotification にはこれを許可する方法がないようです。さらに、アラームが保留中にアプリを手動で強制終了すると、アプリは再起動が必要であることを通知します。これは、何らかの形でバックグラウンドで実行されている必要があることを示唆しているようです。

于 2010-12-17T22:09:40.183 に答える