我需要将声音传递给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];
之前有没有人处理过这个问题,或者实现过这个算法?
答案 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数据库中。
然后将路径传递到userInfo
的UILocalNotification
中的声音文件。