2014-02-10 124 views
1

我在我的应用程序中实现了远程通知!如果我的应用程序在后台和Push消息被发送到我的设备,我用这种方法反应:远程通知在“未运行”状态

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler 
{ 
...Do Stuff 
} 

这是伟大的工作,当应用程序在前台或后台状态!但是如果我的应用程序根本没有运行呢?!当应用程序没有运行时,我不能对推送消息做出反应吗?我的意思是WhatsApp可以做到这一点,对吧?!

+0

可能的重复[检测应用程序是否从推送通知启动/打开](http://stackoverflow.com/questions/16393673/detect-if-the-app-was-launched-opened-from-a推送通知) – joao

+0

多数民众赞成在不同的问题.... – davidOhara

+0

是不是你的问题处理推送通知时,从通知启动应用程序?它覆盖在那里,但我可能误解了你的问题... – joao

回答

1

如果用户点击推送通知,从通知中心,你将有与推送通知内容launchOptions的信息,您可以使用下面的代码检查应用程序的启动点击推送通知,或者是有作为,

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];   
    NSLog(@"LaunchOptions->%@",launchOptions); 
    NSDictionary *userInfo = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey]; 
    if (userInfo) { 
     [self performNotificationAction:userInfo]; 
    } 

    return YES; 
} 

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo{ 
// NSLog(@"userInfo->%@",userInfo); 
    [self performNotificationAction:userInfo]; 
} 

-(void)performNotificationAction:(NSDictionary*)userInfo{ 
    //Do the stuf whatever you want. 
    //i.e. fetch the message or whatever extra information sent in push notification 
} 

希望这会有所帮助。

+0

我不希望用户点击任何东西...我只是想发送一个静默推送消息,并处理它在后台!但是,如果我的应用程序没有运行/终止,给定的方法不会被调用...但WhatsApp呢?! – davidOhara

+0

可能你正在看这个[application:didReceiveRemoteNotification:fetchCompletionHandler](https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIApplicationDelegate_Protocol/Reference/Reference.html#//apple_ref/occ/intfm/UIApplicationDelegate/application:didReceiveRemoteNotification:fetchCompletionHandler :) –

+0

在iOS7中,他们添加了一个可调用应用程序的新方法,但部署目标仅为iOS7。 –