通过声音将设备从睡眠中唤醒的 iPhone 闹钟

Posted

技术标签:

【中文标题】通过声音将设备从睡眠中唤醒的 iPhone 闹钟【英文标题】:iPhone alarms that wake up the device from sleep with sound 【发布时间】:2011-02-22 08:25:42 【问题描述】:

我对 iPhone 的警报功能(本地通知)有点困惑,我还没有找到明确的答案。我想创建像闹钟(甚至是新邮件)这样的功能。具体来说,如果设备处于睡眠状态,它会被嗡嗡声或声音唤醒。您看不到的弹出消息(因为设备处于睡眠状态)的用处要小得多。但是,似乎使用 UILocalNotification 服务,这似乎并没有发生。我还没有查看推送通知,但它们似乎是为了其他目的。

我可能遗漏了一些东西(我希望如此),所以知道的人请为我澄清这个问题。闹钟、邮件和 Facebook 都是这样做的。

我现在正在做的代码 sn-p:

// Set up the fire time
NSDateComponents *dateComps = [[NSDateComponents alloc] init];
[dateComps setDay:[dateComponents day]];
[dateComps setMonth:[dateComponents month]];
[dateComps setYear:[dateComponents year]];
[dateComps setHour:[timeComponents hour]];
[dateComps setMinute:[timeComponents minute]];
[dateComps setSecond:0];
NSDate *itemDate = [calendar dateFromComponents:dateComps];
[dateComps release];

alarm.fireDate = itemDate;
alarm.timeZone = [NSTimeZone defaultTimeZone];
alarm.repeatInterval = NSDayCalendarUnit;
alarm.soundName = @"alarmsound2.m4a";
alarm.alertBody = NSLocalizedString(@"WakeUp", @"");
alarm.hasAction = YES;
NSDictionary *infoDict = [NSDictionary dictionaryWithObject:@"alarm_notify" forKey:@"type"];
alarm.userInfo = infoDict;
[app scheduleLocalNotification:alarm];
[alarm release];

【问题讨论】:

【参考方案1】:

我刚刚在 AppDelegate 中使用以下代码创建了一个示例应用程序,它按预期工作。当手机处于睡眠模式时,我会收到带有默认声音和警报的通知。

请注意,本地通知仅适用于 ios 4.0 或更高版本。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    
      // Override point for customization after application launch.

      UILocalNotification *localNotification = [[UILocalNotification alloc] init];
      localNotification.fireDate = [NSDate dateWithTimeIntervalSinceNow:60];
      localNotification.soundName = UILocalNotificationDefaultSoundName;
      localNotification.alertBody = @"Local Notification Body : Some Alert";
      localNotification.alertAction = @"Action String";

      [[UIApplication sharedApplication] scheduleLocalNotification:localNotification];
      [localNotification release];


      self.window.rootViewController = self.viewController;
      [self.window makeKeyAndVisible];
      return YES;
    

【讨论】:

有没有办法让 localNotification.soundName 成为不在包中的文件名?例如,如果我想创建一个可以在 30 秒内录制自己的声音并将其设置为通知声音的应用程序?我所能找到的只是声音文件需要成为捆绑包的一部分,因此这是不可能的......但我正在寻找解决方案。 嗯,很高兴知道它按预期工作。您能说出您的样本和我的样本之间的显着差异吗? 这似乎与使用捆绑包中的声音文件有关,尽管它似乎有效。目前,使用默认声音,intirim 是可以的。

以上是关于通过声音将设备从睡眠中唤醒的 iPhone 闹钟的主要内容,如果未能解决你的问题,请参考以下文章

Android闹钟 AlarmManager的使用

Android闹钟 AlarmManager的使用

AlarmManager的使用 2019-03-25

通过 GPIO 中断将 k70 从 VLPS 深度睡眠中唤醒

设备处于睡眠模式时的 URLConnection 不起作用

如何通过 c2dm 通知将 Android 从睡眠中唤醒并开始活动?