- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在应用程序进入后台时安排一堆通知。以下代码在 iPhone 模拟器中运行良好...
- (void)applicationDidEnterBackground:(UIApplication *)application {
NSLog(@"applicationDidEnterBackground");
bgTask = [application beginBackgroundTaskWithExpirationHandler:^{
// Clean up any unfinished task business by marking where you.
// stopped or ending the task outright.
[application endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
}];
// Start the long-running task and return immediately.
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
// Do the work associated with the task, preferably in chunks.
// Get notifications count
int notificationsCount = [[[UIApplication sharedApplication] scheduledLocalNotifications] count];
// Calculate the number of possible remaining notifications (maximum 64 per application)
int notificationsRemaining = 64 - notificationsCount;
if (notificationsCount > 0) {
// Get the last notification currently scheduled
UILocalNotification *lastNotif = [[[UIApplication sharedApplication] scheduledLocalNotifications] lastObject];
// If the last notification is not repeating notification
if (lastNotif.repeatInterval == 0) {
// Get the last notification's values
NSDictionary *userInfo = lastNotif.userInfo;
NSInteger interval = [[userInfo objectForKey:@"interval"] intValue];
NSDate *fireDate = lastNotif.fireDate;
NSTimeZone *timeZone = lastNotif.timeZone;
NSString *alertBody = lastNotif.alertBody;
bool hasAction = lastNotif.hasAction;
NSString *alertAction = lastNotif.alertAction;
NSString *soundName = lastNotif.soundName;
// Schedule the remaining notifications
for (int i = 1 ; i < notificationsRemaining+1 ; i++) {
// Allocate new local notification to be scheduled
UILocalNotification *notif = [[UILocalNotification alloc] init];
// If notif is nil go back one step and try again
if (notif == nil) {
i--;
} else {
// Set up the newly created notification
notif.fireDate = [fireDate dateByAddingTimeInterval: 10 * interval * i];
notif.timeZone = timeZone;
notif.alertBody = alertBody;
notif.hasAction = hasAction;
notif.alertAction = alertAction;
notif.soundName = soundName;
notif.userInfo = userInfo;
notif.applicationIconBadgeNumber += 1;
// Schedule the newly created notification
[[UIApplication sharedApplication] scheduleLocalNotification:notif];
[notif release];
}
}
}
}
NSLog(@"notifications: %@", [[UIApplication sharedApplication] scheduledLocalNotifications]);
[application endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
});
...但在 iPod Touch 2 中失败并出现错误:
Thu May 24 14:03:18 unknown TestApp[599] <Warning>: applicationDidEnterBackground
Thu May 24 14:03:18 unknown TestApp[599] <Warning>: applicationWillTerminate
Thu May 24 14:03:18 unknown com.apple.launchd[1] <Notice>: (UIKitApplication:my.test.TestApplicationWithPhoneGap[0x1c13]) Bug: launchd_core_logic.c:3252 (24226):3
Thu May 24 14:03:18 unknown com.apple.launchd[1] <Notice>: (UIKitApplication:my.test.TestApplicationWithPhoneGap[0x1c13]) Bug: launchd_core_logic.c:2681 (24226):10
Thu May 24 14:03:18 unknown com.apple.launchd[1] <Notice>: (UIKitApplication:my.test.TestApplicationWithPhoneGap[0x1c13]) Working around 5020256. Assuming the job crashed.
Thu May 24 14:03:18 unknown com.apple.launchd[1] <Warning>: (UIKitApplication:my.testTestApplicationWithPhoneGap[0x1c13]) Job appears to have crashed: Segmentation fault
Thu May 24 14:03:18 unknown com.apple.debugserver-48[597] <Warning>: 1 [0255/1403]: error: ::read ( 4, 0x2fee59f0, 1024 ) => -1 err = Bad file descriptor (0x00000009)
Thu May 24 14:03:18 unknown SpringBoard[24] <Warning>: Application 'TestApp' exited abnormally with signal 11: Segmentation fault
Thu May 24 14:03:24 unknown SpringBoard[24] <Warning>: Unable to cancel system wake for 2012-05-24 11:03:09 +0000. IOPMCancelScheduledPowerEvent() returned 0xe00002f0
知道为什么这在真实设备上不起作用,有什么解决办法吗?
编辑后的答案:
好像老一代的 iPod Touch 和 iPhone 不支持这个
最佳答案
查看您的设备是否支持后台模式?
关于iphone - 这个 applicationDidEnterBackground 方法有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10736427/
我的问题很简单(我认为)。我有一个实现简单计时器的类(使用一些整数和 NSTimer)。我想关闭我的应用程序(因此进入后台模式),但我希望我的计时器仍然继续计数。我该如何管理? 非常感谢! 最佳答案
我正在编写一个非常简单的聊天应用程序,并且想知道如何在应用程序进入后台时暂停长轮询选择器。 目前,我有一个 Chatroom 类(一个 UIView),它像这样处理长轮询: -(void)startP
我有一个 iOS 游戏,我在其中跟踪玩家在 session 中玩的级别数。一个 session 对应于用户在主屏幕上按下应用图标和按下主页按钮离开应用之间的时间段。 令人惊讶的是,我的大部分用户似乎都
我的应用程序处理敏感数据,我希望用户进入后台后 View 上显示的数据就完全隐藏。我试图通过将一个 View 放在所有其他 View 之上来实现此目的: [self.window addSubview
我将它放在我的 ViewController.m 文件中,当我的应用程序进入后台时,永远不会调用 NSLog。 谁能解释一下为什么? - (void)applicationDidEnterBackgr
我想将我的应用程序发送到后台,只需单击我的应用程序中的按钮即可。有什么方法可以手动或以任何其他方式调用 applicationdidenterbackground 吗? 最佳答案 iOS Human
我正在开发一个应用程序,并且在 IOS 版本中,每当发生外部事件时,例如主页按钮或应用程序中的来电都会显示其密码输入屏幕,因为它显示敏感数据。 我正在尝试在 android 中复制它,但我遇到了麻烦,
我想取消该方法,当用户按下“HOME”按钮时请求用户确认,在 iPhone 上,该按钮将进入后台执行。 如果用户接受,则进入后台执行,如果不接受,我不做任何事情。 我查看了论坛、Apple 的文档,但
我无法更改值或更改声明的任何变量或对象。任何人都可以看到有什么问题吗? 在我的应用委托(delegate)方法中。 - (void)applicationDidEnterBackground:(UIA
我正在创建一个在主线程上执行一些任务的简单应用程序。我在 NSLog 中打印进程,因此我可以了解我的进程是否正在运行。 现在,当我在没有启动进程的情况下按下主页按钮时(进程将在我点击按钮时启动)应用程
我试图跟踪用户何时在线或离线。我试图通过每当打开应用程序以及每当使用以下代码关闭应用程序时更新解析服务器中的用户对象来实现此目的。 func applicationWillEnterForegrou
我有一个 iphone 应用程序。所以我加载和解析 HTML 数据,仅此而已。但是当应用程序进入后台时,我想更新现场比赛的结果并显示像这样的警报下图: 那我该怎么做呢?有通知吗?对不起我的英语不好。
当我关闭我的应用程序时,我触发了 applicationDidEnterBackground 中的代码,该代码从服务器下载一些数据。在某些情况下,这最多可能需要一分钟。如果用户在此期间重新打开应用程序
applicationDidEnterBackground 及相关方法非常有用吗?我通过阅读Apple的指南知道这些方法的含义,但我没有iPhone,我不知道后台应用程序会被系统关闭是否常见。 特别是
我正在尝试在应用程序进入后台时安排一堆通知。以下代码在 iPhone 模拟器中运行良好... - (void)applicationDidEnterBackground:(UIApplication
我想发送一个时间戳到远程服务器,并等待成功的回调,然后将时间戳存储在本地,如果远程服务器没有响应。 我可以将它放入 applicationDidEnterBackground 实现中吗? 最佳答案 根
昨天,我问过,因为我的后台定时器有问题,我找到了一个解决方案让它工作,但现在,当我的应用程序进入后台时我遇到了问题。 在后台运行: backgroundTaskIdentifier = UIAppli
Apple 的文档"App States and Multitasking" (“移动到后台时要做什么”部分)说当应用程序进入后台时保存: Save user data and app state i
这是关于iOS7上的iOS应用程序。 当一个事件的应用程序从多任务显示中被杀死时,我意识到 appDelegate 方法“applicationDidEnterBackground”似乎被调用了两次。
我希望在应用程序变为非事件状态时完全重置它。 我不想保留任何状态,有没有简单的方法可以做到这一点? 这会在后台方法中完成吗?或应用程序委托(delegate)中的任何其他状态方法? 最佳答案 我建议通
我是一名优秀的程序员,十分优秀!