Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UILocalNotification能否用于唤醒后台的任务_Ios_Background_Uilocalnotification - Fatal编程技术网

Ios UILocalNotification能否用于唤醒后台的任务

Ios UILocalNotification能否用于唤醒后台的任务,ios,background,uilocalnotification,Ios,Background,Uilocalnotification,我想知道,是否有可能以某种方式“唤醒”后台的任务,快速检查网络上的某些内容。。我认为这可以通过UILocalNotification实现,但是,无论我做了什么尝试,当应用程序位于后台时,我都无法让didReceiveLocalNotification执行任何操作。。启动后,我立即按下Home(主页)按钮关闭应用程序(启动本地通知会延迟10秒)。当应用程序在前台时,这段代码可以完美地工作,就像坐在前台一样 应用程序内代理头文件: UILocalNotification *localNotif;

我想知道,是否有可能以某种方式“唤醒”后台的任务,快速检查网络上的某些内容。。我认为这可以通过UILocalNotification实现,但是,无论我做了什么尝试,当应用程序位于后台时,我都无法让didReceiveLocalNotification执行任何操作。。启动后,我立即按下Home(主页)按钮关闭应用程序(启动本地通知会延迟10秒)。当应用程序在前台时,这段代码可以完美地工作,就像坐在前台一样

应用程序内代理头文件:

 UILocalNotification *localNotif;
为了进行测试,我设置了本地通知,以便在appDelegate启动时快速启动

localNotif = [[UILocalNotification alloc] init];
localNotif.fireDate = [NSDate dateWithTimeIntervalSinceNow:10];  // the date you want the notification to fire.
localNotif.timeZone = [NSTimeZone defaultTimeZone];
[[UIApplication sharedApplication] scheduleLocalNotification:localNotif];

NSLog(@"setup the timer for 10 seconds");





- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification {
UIApplicationState state = [application applicationState];
NSLog(@"getting kicked");
if (state == UIApplicationStateInactive) {

    // Application was in the background when notification was delivered.

    NSLog(@"INACTIVE..");
} else {
    NSLog(@"ACTIVE..");

}

}

用户有两个选择:#1)是否希望看到应用程序的通知#2) 如果为你的应用启用了通知,他们是否希望单击你的通知以启动你的应用。如果他们确实在应用程序处于后台时接受通知并打开通知,则调用
application:didReceiveLocalNotification
。为了清楚起见,用户必须接受通知(例如在通知下方滑动滑块)。。。否则什么也不叫

- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification {
    NSLog(@"%@", notification);
}
如果您的应用程序已终止
应用程序:didFinishLaunchwithOptions:
将被调用-

- (BOOL)application:(UIApplication *) 
application didFinishLaunchingWithOptions:
(NSDictionary *)launchOptions {
    UILocalNotification *theNotification = 
      [launchOptions 
        objectForKey:UIApplicationLaunchOptionsLocalNotificationKey];
    NSLog(@"%@", theNotification);

    return YES;
}

就我所知,didReceiveLocalNotification仅在有人在本地通知后刷卡后执行,而不是在应用程序处于后台时执行(前提是为应用程序打开了通知)…确切地说。。。这就是通知的局限性。。。它需要一个真正的用户与他们交互。