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