IOS 7锁定屏幕Objective-C的警报本地通知

Posted

技术标签:

【中文标题】IOS 7锁定屏幕Objective-C的警报本地通知【英文标题】:Alarm Local Notification at IOS 7 Locked screen Objective-C 【发布时间】:2016-01-28 12:19:36 【问题描述】:

我正在练习在 ios 7 上开发警报应用程序,例如警报。 Alarm time up on IOS7 但是,我在锁定屏幕时停留在本地通知,就像这样。 My notification 我做的一些代码:

在我的 AppDelegate.m 中

我的代码

[[UIApplication sharedApplication] registerUserNotificationSettings:mySettings];

    // Handle launching from a notification
    UILocalNotification *locationNotification = [launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey];

....
..in my ViewController.m..

[self scheduleLocalNotificationWithDate:correctDate];
....
(void)scheduleLocalNotificationWithDate:(NSDate *)fireDate 

    UILocalNotification *localNotification = [[UILocalNotification alloc] init];

    localNotification.fireDate = fireDate;
    localNotification.alertBody = [NSString stringWithFormat:@"Alert Fired at %@", fireDate];
    localNotification.soundName = UILocalNotificationDefaultSoundName;

    localNotification.applicationIconBadgeNumber = numberReminder;
    [[UIApplication sharedApplication] scheduleLocalNotification:localNotification];

谁能帮忙?

谢谢

【问题讨论】:

【参考方案1】:

第三方应用程序不会像系统闹钟应用程序那样出现在锁定屏幕上 - 您的应用程序只能生成普通通知。如果您想添加一个 API 来获得全屏警报样式,您可以尝试filing an enhancement request。

【讨论】:

你能详细解释一下 API 吗?【参考方案2】:
 if([UIApplication instancesRespondToSelector:@selector(registerUserNotificationSettings:)]) 
    [[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert|UIUserNotificationTypeBadge|UIUserNotificationTypeSound categories:nil]];


UILocalNotification *notification = [launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey];

if(notification)        
    application.applicationIconBadgeNumber = 0;

并在 View Controller.m 中调用这个函数

- (void) Notify 
NSDate *fireDate = [[NSDate alloc]init];
fireDate = self.datePicker.date;    

NSCalendar *cal = [NSCalendar currentCalendar];
NSDateComponents *dateComp = [cal components:(NSCalendarUnitHour | NSCalendarUnitMinute| NSCalendarUnitSecond) fromDate:fireDate];    

NSDate *dd = [cal dateByAddingComponents:dateComp toDate:fireDate options:0];    

UILocalNotification *notification = [[UILocalNotification alloc]init];
[notification setFireDate:dd]; 
[[UIApplication sharedApplication] scheduleLocalNotification:notification];

【讨论】:

这……只是尝试做 OP 的代码已经做的事情,只是它甚至不起作用,因为您在创建它后没有使用通知调用 +scheduleLocalNotification: 抱歉代码不完整,已经编辑。希望这行得通。

以上是关于IOS 7锁定屏幕Objective-C的警报本地通知的主要内容,如果未能解决你的问题,请参考以下文章

iOS 本地通知不会在锁定屏幕上播放声音

从 Swift 3 中的锁定屏幕清除本地通知

如何在IOS上使用swift防止我的应用程序上的屏幕锁定

IOS 通知显示两次默认和我的通知警报

iOS 7 使用 AVPlayer 在锁定屏幕上倒带歌曲

使用Objective-C在iOS警报消息中添加换行符