2016-06-20 16 views
0

私のアプリのメッセージ音を設定するときに問題があります。プッシュ通知が届いたときにカスタムサウンドが再生されない

私は新しくプッシュ通知に取り組んでいます。通知はうまくいきますが、プッシュ通知が届いたらカスタムサウンドを追加できません。ペイロードデータをサーバーに受信します。どのプッシュ通知デリゲートメソッドでカスタムリングコードを追加するか。

Code 

    - (BOOL)application:(UIApplication *)application  didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 

    UIUserNotificationType userNotificationTypes = (UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound); 
    UIUserNotificationSettings *setting = [UIUserNotificationSettings settingsForTypes:userNotificationTypes categories:nil]; 
    [application registerUserNotificationSettings:setting]; 
    [application registerForRemoteNotifications]; 


    NSDictionary *notification = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey]; 

    if (notification) { 
     NSString *cancelTitle = @"Reject"; 
     NSString *showTitle = @"Accept"; 
     NSString *message = @"This is Testing"; 
     UIAlertView *alertView = [[UIAlertView alloc]  initWithTitle:@"Order" 
                  message:message 
                  delegate:self 
                cancelButtonTitle:cancelTitle 
                otherButtonTitles:showTitle, nil]; 
     [alertView show]; 
    } else { 
     // from the springboard 
    } 

    return YES; 
} 
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo 
{ 
     UIApplicationState state = [application applicationState]; 
     if (state == UIApplicationStateActive) { 

      NSString *ring = [NSString stringWithFormat:@"%@",[[userInfo objectForKey:@"aps"] objectForKey:@"sound"]]; 

      NSURL *url = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/%@",[[NSBundle mainBundle] resourcePath],ring]]; 

      NSError *error; 

      audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error]; 
      audioPlayer.numberOfLoops = 0; 
      [audioPlayer play]; 


      NSString *cancelTitle = @"Close"; 
      NSString *showTitle = @"Show"; 
      NSString *message = @"This is Testing"; 
      UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Some title" 
                   message:message 
                   delegate:self 
                 cancelButtonTitle:cancelTitle 
                 otherButtonTitles:showTitle, nil]; 
      [alertView show]; 
      }else{ 



      } 
+0

あなたを助けるでしょうか?私は.caf、.wavなどを意味する – iMHitesh

+0

一度チェックファイルが存在するかどうかは、通知データから来て、NSBundleメインバンドルのリソースパスを与える必要はありません。メインバンドルに存在する場合、ファイル名を直接与えることができます –

+0

このように[NSURL fileURLWithPath:ring] –

答えて

0

このコードを使用してください、それはあなたが使用しているサウンドファイルの種類

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo 
    { 
      UIApplicationState state = [application applicationState]; 
      if (state == UIApplicationStateActive) { 

      //  NSString *ring = [NSString stringWithFormat:@"%@",[[userInfo objectForKey:@"aps"] objectForKey:@"sound"]]; 

     //  NSURL *url = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/%@",[[NSBundle mainBundle] resourcePath],ring]]; 

      // NSError *error; 

      //  audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error]; 
     //  audioPlayer.numberOfLoops = 0; 
     //  [audioPlayer play]; 

     NSString *path =[[NSBundle mainBundle] pathForResource:@"circuit___ios_7" ofType:@"mp3"]; 
       SystemSoundID soundID; 
       AudioServicesCreateSystemSoundID((__bridge CFURLRef)[NSURL fileURLWithPath:path], &soundID); 

     AudioServicesPlaySystemSound(soundID); 

       NSString *cancelTitle = @"Close"; 
       NSString *showTitle = @"Show"; 
       NSString *message = @"This is Testing"; 
       UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Some title" 
                    message:message 
                    delegate:self 
                  cancelButtonTitle:cancelTitle 
                  otherButtonTitles:showTitle, nil]; 
       [alertView show]; 
       }else{ 



       } 
} 
関連する問題