我会尽可能多地写在这里,但标题几乎说明了一切。我已经在几种不同的情况下对其进行了测试:
1)手机开启,静音模式关闭,应用开启,在前台,屏幕解锁
我知道这是通过应用程序委托的 didReceiveLocalNotification 进行的,除了我在 didReceiveLocalNotification 下包含的处理代码之外,没有预料到声音或振动。实际调用的处理代码
NSURL *Sound = [[NSBundle mainBundle] URLForResource: self.currentSoundPVC
withExtension: @"caf"];
// Create a system sound object representing the sound file.
AudioServicesCreateSystemSoundID (soundFileURLRef,&soundFileObject);
AudioServicesPlayAlertSound (soundFileObject);
这确实有效!它会播放声音并同时振动手机。
2)手机开启,静音模式关闭,应用开启,在后台,屏幕解锁
现在,我使用以下代码在应用委托的 applicationDidEnterBackground 中设置了我的 uilocalnotification 警报
NSString *Sound = [self.currentSoundPVC stringByAppendingString:@".caf"];
UILocalNotification* alarm = [[[UILocalNotification alloc] init] autorelease];
alarm.fireDate = [NSDate dateWithTimeIntervalSinceNow:seconds];
[alarm setSoundName:Sound];
[[UIApplication sharedApplication] scheduleLocalNotification:alarm];
这只是部分有效!声音被播放,但没有振动!现在,我认为这是一个错误,因为我引用了苹果开发者网站,
“当通知发出并播放声音时,系统也会在支持它的设备上触发振动。”
现在,显然这不是我的 iPhone 的情况,而且很明显模拟器不会振动,所以我无法对此进行测试,并希望在开发人员社区中解决这个问题!
3) 手机开启,静音模式关闭,应用开启,在前台,屏幕锁定
与#2 相同
4)手机开启,静音模式关闭,应用开启,在后台,屏幕锁定
与#2 相同
5)手机开机,静音模式关闭,应用程序关闭(后台进程删除)
同 #2,因为 uilocalnotifications 从未被取消,所以 iOS 仍然认为它们是有效的。
6)手机开启,静音模式开启,应用开启,在后台,屏幕解锁
没有声音,没有振动,什么都没有!这糟透了!我本来希望苹果能像往常一样想出开箱即用的东西!