用户收到推送通知时如何播放自定义声音文件? [复制]

Posted

技术标签:

【中文标题】用户收到推送通知时如何播放自定义声音文件? [复制]【英文标题】:How to play custom sound file when user get push notification? [duplicate] 【发布时间】:2014-01-17 06:52:11 【问题描述】:

我在应用程序包中有一个声音文件,我想在用户收到推送通知时播放该声音文件。

如果是的话,在ios中是否可行,那么请提出实现这一目标的方法。

谢谢,

【问题讨论】:

developer.apple.com/library/mac/documentation/… FWIW 除 default 以外的任何声音(系统声音或您自己制作的声音)都被视为自定义声音,必须手动添加到 AppBundle。 【参考方案1】:

要播放此声音,您必须在通知负载中指定声音的文件名。例如,假设您在应用程序中添加了一个名为 example.caf 的声音文件,我们可以使用通知负载播放此声音,如下所示:


    aps =     
    
        alert = "test example notification message";
        sound = "example.caf";
    ;

然后当你的通知到达时自定义声音会播放。

【讨论】:

但是如果我在应用程序中有设置应该播放特定文件怎么办。我不想使用 aps 来指定声音文件名,但我想在收到通知时使用本地设置。例如,我有设置屏幕,我在其中指定所需的声音和音量级别。那我猜我们需要使用@007 答案? 在这种情况下,您遵循@007 的回答。只是当您从设置屏幕中选择任何声音文件时,您需要更改NSURL *url = create path according to your selected sound file。但是您无法将有效负载与您的设置同步,这意味着当您从应用设置更改声音文件时,有效负载sound = "example.caf" 不会改变。您必须在本地应用逻辑来满足您的需求。 好的,谢谢)所以你的意思是,如果我在 aps 中指定sound = "example.caf",那么即使应用设置有不同的.caf 作为通知的声音,应用也会播放“example.caf”文件? 在应用程序的哪里添加文件? 应用程序包中的任何位置@dpaksoni【参考方案2】:

在您的应用委托类中使用此方法。

-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo

    UIApplicationState state = [application applicationState];

    if (state == UIApplicationStateActive)
    

        NSLog(@"User Info : %@", [userInfo description]);

        NSLog(@"User Info Alert Message : %@", [[userInfo objectForKey:@"aps"] objectForKey:@"alert"]);

        NSString *messageString = [NSString stringWithFormat:@"%@", [[userInfo objectForKey:@"aps"] objectForKey:@"alert"]];

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

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

        NSError *error;

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

    



【讨论】:

你必须小心,因为如果你的应用程序被杀死/关闭,就不会再收到这个委托方法调用了。 我已经测试了这个解决方案,但它不起作用!单击推送通知后,您将听到声音,然后您将在此处听到 iOS 系统的默认声音。我还没有找到办法。仅当应用程序在前台时才有效。

以上是关于用户收到推送通知时如何播放自定义声音文件? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

AWS:收到推送消息时播放自定义声音

配置收到推送通知时播放的声音

如何使用 Apple 推送通知播放自定义声音?

Apple 推送通知的用户定义声音?

前台收到远程APN推送时如何播放默认声音? [重复]

使用 GCM 的 iOS 自定义推送通知声音