运用@apptality一些细节,我能得到与达尔文通知该工作。 This answer解释了如何使通知正常工作。我用下面的代码来做到这一点:
在AppDelegate中的didFinishLaunchingWithOptions
方法的地方下面的代码:
CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCenter(), //center
(void*)self, // observer (can be NULL)
lockStateChanged, // callback
CFSTR("com.apple.springboard.lockcomplete"), // event name
NULL, // object
CFNotificationSuspensionBehaviorDeliverImmediately);
然后用这个方法来处理通知:
static void lockStateChanged(CFNotificationCenterRef center, void *observer, CFStringRef name, const void *object, CFDictionaryRef userInfo) {
NSLog(@"event received!");
if (observer != NULL) {
AppDelegate *this = (__bridge AppDelegate*)observer;
NSString* notifyName = (__bridge NSString*)name;
if ([notifyName isEqualToString:@"com.apple.springboard.lockcomplete"]) {
[this localNotificationSetup];
}
}
}
其中localNotificationSetup
是你注册您的通知送货。要小心,因为这是一个基于c的方法,所以你的Objective-C代码需要改变。然后,您可以使用此方法的通知处理措施:
-(void)application:(UIApplication *)application handleActionWithIdentifier:(NSString *)identifier forLocalNotification:(UILocalNotification *)notification withResponseInfo:(NSDictionary *)responseInfo completionHandler:(void (^)())completionHandler
要真正实现任何有用的东西,你可能需要的,如果你的应用程序进入睡眠状态,加载在这个方法中,从数据NSUserDefaults的。
你是什么意思只锁屏?如果该人收到通知,他会收到通知,不管他在电话上做了什么。如果手机已解锁,则会显示在顶部,如果您决定不点击它,则会直接移至通知中心。 – emotality
@apptality我想在用户锁定设备时安排本地通知,以便他们可以通过通知与锁定屏幕上的自定义操作进行交互。 –