あなたのアプリデリゲートでは...
- (void) presentWidget: (NSString*)theDisplayedText {
BOOL widgetIspresent = [WidgetVC widgetIsCurrentlyPresented];
if (!widgetIspresent) {
WidgetVC *widgetVC = [[WidgetVC alloc] initWithNibName:@"WidgetVC" userInfoString:theDisplayedText bundle:nil];
widgetVC.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
widgetVC.userInfoStr = theDisplayedText;
[mainScreenManager presentViewController:widgetVC animated:YES completion:nil];
}
}
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
UILocalNotification *localNotif = [launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey];
if (localNotif) {
NSLog(@"Recieved Notification didFinishLaunchingWithOptions %@",localNotif);
NSString *theDisplaytext = [localNotif.userInfo valueForKey:@"someKey"];
//here we have to handle whatever notification was pressed - that might also be an old aready passed one
//this all is checked when the widget opens - it will show if the notification is OK or too old
[self presentWidget: theDisplaytext ];
} else {
//so we started the app normally, not via local notification
[self presentWidget];
}
return YES;
}
// Handle the notificaton when the app is running
- (void)application:(UIApplication *)app didReceiveLocalNotification:(UILocalNotification *)localNotif {
// Handle the notificaton when the app is running
NSLog(@"Recieved Notification didReceiveLocalNotification %@",localNotif);
NSString *theDisplaytext = [localNotif.userInfo valueForKey:@"someKey"];
[self presentWidget: theDisplaytext];
}
ウィジェットのUIViewControllerを開始する方法が必要です。mainScreenManagerヘルパーを作成しました。
したがって、widgetVCには、「Snooze」と「OK」がありますが、「Ignore」は通知自体を無視するだけです。
これがあなたを使える軌道に乗せることを願っています...
psアプリをAndroidからiPhoneに移植したので、この画面に「widgetVC」という名前を使用しました。Androidでは、ウィジェットとして実装されます。iPhone愛好家が気分を害していないことを願っています:-)