我会写尽可能多的写在这里,但标题几乎说了一切。我在几种不同的情况下测试过它:
我知道这是通过app delegate的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);
这实际上有效!它会播放声音并同时振动手机。
现在,我使用以下代码在app delegate的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的情况,显然模拟器没有振动,所以我无法测试,并希望在开发者社区中解决这个问题!
与#2相同
与#2相同
与#2相同,因为uilocalnotifications从未被取消,所以iOS仍然认为它们是有效的。
没有声音,没有振动,没有!这糟透了!我希望苹果能像往常一样直接开箱即用!
答案 0 :(得分:3)
这些是选项和效果(都假设音量设置为某个合理的值):
配置:
行为:
配置:
行为:
配置:
行为:
配置:
行为:
答案 1 :(得分:2)
以下是声音和振动的作用:
// Create a new notification
UILocalNotification * notif = [[[UILocalNotification alloc] init] autorelease];
if (notif)
{
notif.repeatInterval = 0;
notif.alertBody = @"NOTIFICATION!!"];
notif.soundName = @"sound.caf";
notif.alertAction = NSLocalizedString(@"View", @"View");
[[UIApplication sharedApplication] presentLocalNotificationNow:notif];
}
我知道这可能听起来有些愚蠢,但您可能在iPhone设置中关闭了振动吗?
答案 2 :(得分:1)
很抱歉发布此答案,但我的评论太长,无法发布在您的评论之下。所以我只是把一个片段放在那里,剩下的就在这里。这是对万万的答案的回复。
嗨Tony, 感谢您的输入,但我不确定您更改的哪些内容会产生影响。如果我注意到你更改了以下项目:
1)scheduleLocalNotification - > presentLocalNotificationNow
2)明确设置UILN repeatInterval
3)明确设置UILN alertBody
4)明确设置UILN alertAction
除了这四项修改外,我没有看到任何其他内容。您认为哪些因果变化会对您产生预期效果。
大笑......没必要觉得这是一个愚蠢的问题。虽然,我在帖子中提到“静音模式开/关”,但我没有说明这意味着什么。我特别谈到手机侧面的开关。我甚至没有检查iPhone的设置!哈哈!所以,这是一个很好的问题!然而不幸的是,它没有被关闭,并且在OrigPost的情景#1中它已成功振动。