Jac*_*ang 5 core-location alarm ios uilocalnotification ios8
我正在尝试构建自定义警报应用程序.但我面临的挑战是在应用程序处于后台时播放声音.
第一种方法,UILocalNotification,
根据Apple编程指南,发出警报的正确方法是
- (void)scheduleAlarmForDate:(NSDate*)theDate
{
UIApplication* app = [UIApplication sharedApplication];
NSArray* oldNotifications = [app scheduledLocalNotifications];
// Clear out the old notification before scheduling a new one.
if ([oldNotifications count] > 0)
[app cancelAllLocalNotifications];
// Create a new notification.
UILocalNotification* alarm = [[UILocalNotification alloc] init];
if (alarm)
{
alarm.fireDate = theDate;
alarm.timeZone = [NSTimeZone defaultTimeZone];
alarm.repeatInterval = 0;
alarm.soundName = @"alarmsound.caf";
alarm.alertBody = @"Time to wake up!";
[app scheduleLocalNotification:alarm];
}
}
Run Code Online (Sandbox Code Playgroud)
问题是,
如果用户手机处于静音状态,则通知声音只会是一个不足以发出警报的小振动.
理想情况下,无论电话处于静音还是正常状态,我都希望警报能够响起,以唤醒用户.
我能想到的第二种方式,AVAudioSession
除了以上两种方法都不起作用外,我似乎找不到任何其他方法来解决手头的问题.
我正在尝试创建一个基于位置的警报应用程序.
我可以在UILocalNotification上设置30秒的区域和自定义声音,但如果手机静音,声音将无法播放.
我可以让一个locationManager监控我的区域,但是在我从后台收到通知后我无法播放声音.
我已经下载了许多能够做到这一点的应用程序,所以我知道必须有实现它的方法.然而,经过多次尝试各种角度,我似乎找不到任何好的解决方案.如果有人有制作自定义闹钟的经验,请尽可能分享一些提示和指示.
谢谢.
小智 2
由于我的名气不足以到处发表评论,所以我就写在这里作为答案。为此事道歉。
我也面临着同样的问题。虽然我不能给你一个解决方案,但可能会给你一些提示。对我来说,我认为这可能是不可能实现的。
我仔细检查了我使用的两个警报应用程序:Sleep Cycle和UNIQLO Wake Up。我发现这两个应用程序要求你让它始终在前台运行,以确保闹钟正常工作。特别是UNIQLO Wake Up,当你保存闹钟时,它会向你显示提醒,告诉你按Home键可能会导致闹钟不工作。
有一篇帖子询问了类似的问题,作者提供了一些应用程序的名称:How do I start play audio while in Silent modelocked in iOS 6。我检查了名为 的应用程序WaveAlarm。同样,如果手机处于静音模式并且您将其置于后台,则只有 UILocalNotification 起作用。这意味着,在这种情况下不会播放任何声音。如果您的手机仍处于静音模式,但您将应用程序保持在前台,它会播放声音。声音的音量取决于您设置的视频播放音量。
所以对我来说,我认为当你将应用程序置于后台并将手机设置为静音模式时,可能无法播放警报声音。我想实现这一点的最可能的方法是要求用户将其保留在前台,并播放带有警报声的媒体。
这两天我会努力实现这个功能。如果我有其他的理解,我会在这里编辑这篇文章。
| 归档时间: |
|
| 查看次数: |
1037 次 |
| 最近记录: |