2012-06-27 9 views
7

UILocalNotificationで動作するカスタムサウンドを取得しようとしていますが、まったく音が出ません。 UILocalNotificationDefaultSoundNameを使用すると、実際にはデフォルトのサウンドが得られますが、カスタムサウンドが指定されている場合は、メッセージは出力されません。音は30秒以下で、私が知る限り正しい音質です。ここでは、ファイル情報のスクリーンショットです: カスタムiOS UILocalNotificationのサウンドが再生されない(Xcodeのアップデートに関連する可能性があります)

私はXCodeののDerivedDataディレクトリ内の.appディレクトリを視察しました、そして alarm.cafファイルは、私はそれがだと信じて意味アプリのルートにありますバンドル(右?)。

これはかなり前に動作していたと私は確信しています。たぶんそれはヒントですか?

他の回答に記載されているように、私はまた、削除/再インストール/リブートを試みました。ご覧のとおり、私はcancelAllLocalNotificationsを最初に呼び出しています。

何が間違っている可能性がありますか?

[[UIApplication sharedApplication] cancelAllLocalNotifications]; 
NSLog(@"installing alarm"); 
[arguments pop]; // name 
[arguments pop]; // title 
alarm.alertBody = [arguments pop]; 
alarm.fireDate = [[NSDate date] addTimeInterval:[[arguments pop] intValue]/1000]; 
//alarm.soundName = UILocalNotificationDefaultSoundName; 
alarm.soundName = @"alarm.caf"; 

[[UIApplication sharedApplication] scheduleLocalNotification:alarm]; 

答えて

3

あなたのコードはよさそうです。

あなたのプロジェクトをきれいにして、あなたのデバイス/シミュレータからあなたのアプリをアンインストールしてから、再インストールしてみてください。 (あなたのコードは、良いことのようですので)それは、

がちょうど

+1

ヘクタールinshallah取り組んでいる、それは

オンにインターアプリオーディオ 変更でオフ機能本でした。私のために働いた。 – GraehamF

0

iPhoneがサイレントモードになっていないことを確認してください助けることができますここには何が起こったのですか?私はそれがまだ実行されている場合、アプリケーションが通知自体をどのように処理するか忘れていました。私のコードは、UIAlertViewを表示していて、サウンドを再生していませんでした。私はなぜそれがデフォルトサウンドで動作するのか分かりません。いずれにせよ、私はAppDelegateに、このようなコードを追加しました:

- (void)application:(UIApplication *)application 
didReceiveLocalNotification:(UILocalNotification *)notification 
{ 
    NSLog(@"didReceiveLocalNotification"); 
    if (application.applicationState == UIApplicationStateActive) { 
    UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"MarkMyTime" 
     message:notification.alertBody 
     delegate:self cancelButtonTitle:@"OK" 
     otherButtonTitles:nil]; 
    NSString *soundFilePath = [[NSBundle mainBundle] 
     pathForResource:notification.soundName ofType:nil]; 
    NSURL *fileURL = [[NSURL alloc] initFileURLWithPath: soundFilePath]; 
    AVAudioPlayer *player = [[AVAudioPlayer alloc] initWithContentsOfURL: fileURL error: nil]; 
    [fileURL release]; 
    player.delegate = self; 
    [player prepareToPlay]; 
    [player play]; 
    [alertView show]; 
    if (alertView) { 
     [alertView release]; 
    } 
    } 
} 

- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag 
{ 
    NSLog(@"Releasing player"); 
    [player release]; 
} 

これはUIAlertViewを示し、通知オブジェクトにサウンドを再生します。デリゲートをプレーヤに割り当てるには、AppDelegateにAVAudioPlayerDelegateインターフェイスを追加する必要があります。 ARCを使用している場合、このコードを少し簡略化することができます。

@interface AppDelegate : PhoneGapDelegate <AVAudioPlayerDelegate> { 

これが最善の方法であるかどうかはわかりませんので、改善があればチャイムしてください。

+0

UILocalNotificationDefaultSoundNameが動作してサウンドを生成したことで示されるように、サイレントモードは問題ではありませんでした。 –

0

[OK]をあなたのiPhoneの側面にあるボタンをチェックし、多分:)

2

私はその理由を知らないので(ドキュメントも読まなかった)、私はちょうどアクションプロパティnotification setHasAction:YESをオンにしてサウンドが再生され始めました。

0

Xcodeプロジェクトにサウンドファイル(* .caf)を追加しないでください。ビルドフェーズ/バンドルリソースのコピー。

+2

これは完全な解決策ではなく、回答として投稿するべきではありません。コメントを使用して問題の修正を提案する。 – andr

0

あなたのコードは、 良いのですが、設定あなたのiPhoneをチェック 設定 - >通知センター - >あなたのアプリケーション - >サウンド - > サウンドだから

「オン」は「オン」、これを有効にします、アプリケーションのターゲットで機能でインテルのAppオーディオを確認し、ローカル通知音が:)

+1

これをコメントとして投稿してください。 – Pawan

+0

あなたのコードは私にとっては役に立たない –

関連する問題