我成功地在我的设备上接收到警报类型的推送通知。
1.活动状态或应用程序在前台
正在调用应用程序的 didReceiveRemoteNotification 方法。在这里我可以访问收到的通知消息。
2. In-Active State OR App在后台
推送通知的消息显示在带有“查看”和“关闭”按钮的警报框中。
一种。单击“查看”按钮后,将调用 didReceiveRemoteNotification 方法。我再次可以访问收到的通知消息。
湾。单击“关闭”按钮后,消息将消失。在这种情况下,我没有关于最后收到的推送通知的任何处理程序。
3. 应用不在后台或应用未运行
与案例 2 相同。
4. iPhone 处于睡眠模式
警报显示有消息,但没有“查看”或“关闭”按钮。
一种。在 UI 上,它将显示“Slide to View”。如果用户与手机交互,它将打开应用程序。我可以访问收到的通知消息。
湾。如果用户不进行交互并允许手机进入睡眠模式或手动将手机置于睡眠模式,则下次 iOS 会显示“滑动解锁”消息。在这里,我没有任何最后一个推送通知的处理程序。
如何访问案例 2.b 和 4.b 的最后一次推送通知,是否有任何我缺少实现的最佳调用方法。
编辑 1:下面是我的 appDelegate 代码
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
// Override point for customization after application launch.
self.viewController = [[[Test1ViewController alloc] initWithNibName:@"Test1ViewController" bundle:nil] autorelease];
self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];
// For PUSH NOTIFICATION
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:
(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];
if (launchOptions != nil)
{
NSDictionary* dictionary = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
if (dictionary != nil)
{
NSLog(@"Launched from push notification: %@", dictionary);
}
}
return YES;
}
- (void)application:(UIApplication*)application didReceiveRemoteNotification:(NSDictionary*)userInfo
{
NSLog(@"Received notification: %@", userInfo);
// Received Notification at here ....
// Now based on response further to do ...
}
- (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken
{
NSLog(@"My token is: %@", deviceToken);
}
- (void)application:(UIApplication*)application didFailToRegisterForRemoteNotificationsWithError:(NSError*)error
{
NSLog(@"Failed to get token, error: %@", error);
}
谢谢,J61