当推送通知到达时如何做一些工作?

时间:2016-01-07 09:28:34

标签: ios objective-c apple-push-notifications ios9

我有一个应用程序,我收到了推送通知,但我想这样做,如果设备得到推送通知,我的应用程序在后台进行一些工作而无需用户交互。 现在,如果用户点击通知,我可以做一些工作,但对我来说效率不够。

3 个答案:

答案 0 :(得分:1)

<强> 1。在Info.plist中,将UIBackgroundModes设置为远程通知

<key>UIBackgroundModes</key>
<array>
    <string>remote-notification</string>
</array>

<强> 2。您需要在ApplicationDelegate

中实现以下方法
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))handler
{

   //Success
    handler(UIBackgroundFetchResultNewData);
}

第3。发送内容可用的推送通知:1,因此它将像无声

一样工作
aps {
content-available: 1
alert: {...}
}

答案 1 :(得分:1)

  func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject])

   {
       if (state == UIApplicationState.Background || state == UIApplicationState.Inactive)
         {
            // Your Logic
         }
     }

//在AppDelegate.h或AppDelegate.swift文件中编写此方法。

答案 2 :(得分:0)

当你的推送通知到来时,你可以在didReceiveRemoteNotification委托上做一些额外的后台工作。

在appDelegate.m文件中,使用dispatch_async代码添加以下应用程序委托方法以运行其他后台执行。

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo{


    //Background execution block
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

        //Do some work if the user tap on the notification
    });
}