【问题标题】:UILocalNotification Not Working ... No Vibration on iPhone 4 iOS 4.3UILocalNotification 不工作...在 iPhone 4 iOS 4.3 上没有振动
【发布时间】:2011-03-26 17:08:05
【问题描述】:

我会尽可能多地写在这里,但标题几乎说明了一切。我已经在几种不同的情况下对其进行了测试:

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];

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

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

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

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

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

同#2

4) 手机开启,静音模式关闭,应用开启,在后台,屏幕锁定

同#2

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

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

6) 手机开启,静音模式开启,应用开启,在后台,屏幕解锁

没有声音,没有振动,什么都没有!这糟透了!我本来希望苹果能像往常一样拿出开箱即用的东西!

【问题讨论】:

    标签: iphone uilocalnotification vibration


    【解决方案1】:

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

    选项 1:

    配置:

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

    行为:

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

    选项 2:

    配置:

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

    行为:

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

    选项 3:

    配置:

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

    行为:

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

    选项 4:

    配置:

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

    行为:

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

    【讨论】:

      【解决方案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 设置中关闭了振动?

      【讨论】:

      • 您好 Tony,感谢您的意见,但我不确定您更改的哪些内容有效果。如果我没记错,您更改了以下项目:请参阅发布的答案以获取完整评论。
      • 尽管您的建议没有以明确的因果关系提出解决方案,但我继续尝试实施您建议的所有更改,除了 presentlocalnotificationnow。它没有用! Uilocalnotification 仍然没有按应有的方式执行。
      【解决方案3】:

      很抱歉将其发布为答案,但我的评论太长,无法发布在您的下方。所以我只是放了一个sn-p,其余的放在这里。这是对千亿人的回答的回复。

      嗨,托尼, 感谢您的意见,但是我不确定您更改的哪些内容产生了影响。如果我没记错的话,您更改了以下项目:

      1) scheduleLocalNotification --> presentLocalNotificationNow

      2) 显式设置 UILN repeatInterval

      3) 显式设置 UILN alertBody

      4) 显式设置 UILN alertAction

      除了这四个变化,我看不到其他任何东西。您认为这些因果变化中的哪一个对您产生了预期的影响。

      大声笑...不必觉得这是一个愚蠢的问题。尽管我在帖子中确实提到了“静音模式开/关”,但我没有具体说明这是什么意思。我特别谈论的是手机侧面的开关。我什至没有想到检查 iPhone 设置!哈哈!所以,这是一个好问题!然而,不幸的是,它没有关闭,并且在来自 OrigPost 的场景 #1 中成功振动。

      【讨论】:

      • 我遇到了同样的问题,发现了以下问题。如果您使用带有本地通知的自定义声音,手机只会在您向用户显示消息(即 alertBody)时振动.但是,如果您使用 UILocalNotificationDefaultSoundName,无论是否显示任何通知,手机都会为每个通知振动。为什么?我不知道,但如果其他人知道,请发布答案。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-09
      • 2012-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多