从NSData为localNotification设置自定义声音

时间:2014-09-04 07:43:20

标签: ios ios7 uilocalnotification

我需要将声音传递给localNotification。我知道它的局限性和要求的格式。 但添加它的方式只是从文件名中获取它。 UILocalNotification只有 soundName 属性,只有<<>> 名称 才能获得声音< strong> App Bundle 。

当我以blob格式保存声音并将其恢复为NSData时,我设置了 SQLite 数据库。我需要设置此声音并将其作为参数提供给NSData格式的localNotification。

以下是我设置localNotification的方法

UILocalNotification *localNotification = [[UILocalNotification alloc] init];

NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.dateFormat = @"HH-mm";
NSDate* date = [dateFormatter dateFromString:[dateFormatter stringFromDate:timeToSetOff.date]];

localNotification.soundName = @"";  //Here is the line where I am having issues

[localNotification setFireDate:date];
[[UIApplication sharedApplication] scheduleLocalNotification:localNotification];

之前有没有人处理过这个问题,或者实现过这个算法?

2 个答案:

答案 0 :(得分:2)

在收到通知时触发此方法

-(void) playSound {
NSString *soundPath = [[NSBundle mainBundle] pathForResource:@"soundfile" ofType:@"caf"];
SystemSoundID soundID;
AudioServicesCreateSystemSoundID((__bridge CFURLRef)[NSURL fileURLWithPath: soundPath], &soundID);
AudioServicesPlaySystemSound (soundID);   }

答案 1 :(得分:1)

soundName属性只接受应用程序包中声音的文件名。因此,当您的应用程序在前台运行时,您将能够使用AVplayer等播放声音。您不能使用soundName来存储名称。将声音保存为blob会使其变得更难,只需将文件保存在文档目录中,并将文件路径保存在SQLite数据库中。

然后将路径传递到userInfoUILocalNotification中的声音文件。