每天上午 10 点调用一种方法
Posted
技术标签:
【中文标题】每天上午 10 点调用一种方法【英文标题】:call one method every day at 10.00 AM 【发布时间】:2015-09-03 11:04:05 【问题描述】:大家好, 我想每天早上 10 点更新我的本地数据库。应用程序正在运行或被杀死或在后台并不重要。 ios中是否有任何机制,例如android中的服务类或任何东西?
我知道我们可以通过使用本地通知来实现这一点,但是有没有办法在不使用本地通知的情况下做到这一点?
【问题讨论】:
首先,如果我们的应用程序没有运行,我们将无法进行更新,您如何使用 localNotification 来实现这一点,因为在您单击通知并打开应用程序之前无法完成更新过程。 @baydi 请先仔细阅读上述问题....我非常清楚本地通知是如何工作的...***.com/questions/16653991/… ...参考此链接.... 【参考方案1】:您似乎需要Silent Push Notification,但在这种情况下,时间表应该在您的服务器上。
【讨论】:
【参考方案2】:你无法做到这一点..
因为即使应用程序处于后台,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 设备时间触发推送通知来实现它...
【讨论】:
以上是关于每天上午 10 点调用一种方法的主要内容,如果未能解决你的问题,请参考以下文章