UILocalNotification无效... iPhone 4 iOS 4.3无振动

时间:2011-03-26 17:08:05

标签: iphone uilocalnotification vibration

我会写尽可能多的写在这里,但标题几乎说了一切。我在几种不同的情况下测试过它:

1)电话开启,静音模式关闭,应用开启,前景,屏幕解锁

我知道这是通过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);

这实际上有效!它会播放声音并同时振动手机。

2)手机开启,静音模式关闭,应用开启,背景,屏幕解锁

现在,我使用以下代码在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];

这只是部分有效!声音播放但没有振动!现在,我认为这是一个错误,因为我引用了苹果开发者网站

http://developer.apple.com/library/ios/#documentation/iphone/conceptual/iphoneosprogrammingguide/BackgroundExecution/BackgroundExecution.html,安排本地通知的传递部分:

“当发送通知并播放声音时,系统也会在支持它的设备上触发振动。”

现在,显然这不是我的iPhone的情况,显然模拟器没有振动,所以我无法测试,并希望在开发者社区中解决这个问题!

3)手机开启,静音模式关闭,应用开启,前景,屏幕锁定

与#2相同

4)手机开启,静音模式关闭,应用开启,背景,屏幕锁定

与#2相同

5)手机开启,静音模式关闭,应用关闭(后台进程已删除)

与#2相同,因为uilocalnotifications从未被取消,所以iOS仍然认为它们是有效的。

6)手机开启,静音模式开启,应用开启,背景,屏幕解锁

没有声音,没有振动,没有!这糟透了!我希望苹果能像往常一样直接开箱即用!

3 个答案:

答案 0 :(得分:3)

这些是选项和效果(都假设音量设置为某个合理的值):

选项1:

配置:

  • [开发者控制]在UILocalNotification中设置的有效声音名称=否
  • [用户控制]应用的通知中心设置:声音= N / A
  • [用户控制]静音模式(iPhone侧面开关)= N / A

行为:

  • 声音播放时发出通知=否
  • 振动通知=否

选项2:

配置:

  • 在UILocalNotification中设置的有效声音名称=是
  • 应用的通知中心设置:声音=关闭
  • 静音模式(在iPhone侧面开关)= N / A

行为:

  • 声音播放时发出通知=否
  • 振动通知=否

选项3:

配置:

  • 在UILocalNotification中设置的有效声音名称=是
  • 应用的通知中心设置:声音=开启
  • 静音模式(在iPhone侧面开关)=否(未选中)

行为:

  • 播放声音=是
  • 振动通知=否

选项4:

配置:

  • 在UILocalNotification中设置的有效声音名称=是
  • 应用的通知中心设置:声音=开启
  • 静音模式(在iPhone侧面开关)=是(已选择)

行为:

  • 声音播放时发出通知=否
  • 振动通知=是

答案 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中它已成功振动。