4

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

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)手机开启,静音模式开启,应用开启,在后台,屏幕解锁

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

4

3 回答 3

3

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

选项1:

配置:

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

行为:

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

选项 2:

配置:

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

行为:

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

选项 3:

配置:

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

行为:

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

选项 4:

配置:

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

行为:

  • 通知播放的声音 = 否
  • 振动通知 = 是
于 2014-06-19T15:24:44.347 回答
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 设置中关闭了振动?

于 2011-03-26T22:27:27.770 回答
1

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

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

1) scheduleLocalNotification --> presentLocalNotificationNow

2) 显式设置 UILN repeatInterval

3) 显式设置 UILN alertBody

4) 显式设置 UILN alertAction

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

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

于 2011-03-28T02:27:12.000 回答