每天上午10点拨打一种方法

时间:2015-09-03 11:04:05

标签: ios objective-c background-process localnotification

大家好,                我想每天早上10点更新我的本地数据库。应用程序正在运行或被杀或在后台运行并不重要。在IOS中是否有像android或其他任何服务类的机制?

我知道我们可以通过使用本地通知来实现这一点但是有没有办法在不使用本地通知的情况下执行此操作?

2 个答案:

答案 0 :(得分:1)

您似乎需要Silent Push Notification,但在这种情况下,时间表应该在您的服务器上。

答案 1 :(得分:-1)

你无法做到这一点..

由于Apple不允许连续运行任何方法,即使应用程序处于后台......

唯一的解决方案是使用本地通知。

我知道您不会使用本地通知,但我保留的代码可能会有所帮助......

ViewController.m

UIApplication* app = [UIApplication sharedApplication];
    NSArray*    oldNotifications = [app scheduledLocalNotifications];

    if ([oldNotifications count] > 0)
        [app cancelAllLocalNotifications];

    NSCalendar* myCalendar = [NSCalendar currentCalendar];
    NSDateComponents* components = [myCalendar components:NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit
                                          fromDate:[NSDate date]];

    [components setHour: 10];
    [components setMinute: 00];
    [components setSecond: 0];
     NSDate *alertTime = [myCalendar dateFromComponents:components];

    NSLog(@"@@@@@@@@@@@@Local Notification Set Time is:%@",alertTime);

    UILocalNotification  *notifyAlarm = [[UILocalNotification alloc]
                   init];
    if (notifyAlarm)
    {
        notifyAlarm.fireDate = alertTime;
        notifyAlarm.userInfo=[[NSDictionary alloc]initWithObjectsAndKeys:@“ViewController”,@“Home”, nil];
        //notifyAlarm.applicationIconBadgeNumber=1;
        notifyAlarm.timeZone = [NSTimeZone defaultTimeZone];
        notifyAlarm.repeatInterval = NSHourCalendarUnit;
        notifyAlarm.soundName = @"iPhone_Tritone.mp3";
        notifyAlarm.alertBody = @“Calling Method”;
        [app scheduleLocalNotification:notifyAlarm];
    }

AppDelegate.m

- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
{
    NSLog(@"@@@@@@@@@@Did Receive Local Notification@@@@@@@@@@@ is:%@",notification.userInfo);

    [self callingUrMethod];
}

此外,您可以使用推送通知在每天早上10点根据iPhone设备时间由服务器触发...