【问题标题】:Custom sound not played when push notification arrives推送通知到达时未播放自定义声音
【发布时间】:2016-06-20 06:44:19
【问题描述】:

我在为我的应用设置消息声音时遇到了一些问题。

我是推送通知的新工作。通知工作正常。但是当推送通知到达时我无法添加自定义声音。将有效负载数据接收到服务器。在哪个推送通知委托方法中添加自定义响铃代码。

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{



          }

【问题讨论】:

  • 您使用过哪种类型的声音文件? ,我的意思是 .caf , .wav 等
  • 一旦检查文件是否存在,它来自通知数据,如果它存在于主包中,则无需提供NSBundle主包资源路径,您可以直接提供文件名
  • 你可以这样给出,[NSURL fileURLWithPath: ring]
  • 环也必须包含文件扩展名
  • .wav 文件以使用播放自定义铃声

标签: ios objective-c apple-push-notifications


【解决方案1】:

请使用此代码,它将对您有所帮助

- (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{



              }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-16
    • 1970-01-01
    • 2022-07-12
    • 1970-01-01
    • 1970-01-01
    • 2022-08-20
    • 1970-01-01
    相关资源
    最近更新 更多