gpt4 book ai didi

iphone - 使应用程序在后台无限制地保持事件状态(对于 Cydia 应用程序)

转载 作者:可可西里 更新时间:2023-11-01 05:10:27 25 4
gpt4 key购买 nike

我不介意使用私有(private) API 或 Apple 不喜欢的任何类型,但我更喜欢一种快速解决方案,而不是像在后台播放静音或调配之类的东西。

显然这不适用于应用商店,所以请不要讲课 :)

那么如何在后台运行而不像“backgrounder”那样受到任何限制呢?除了一些将人们指向不同方向的答案外,我没有设法找到答案,但也许从那时起就有人设法挖掘出来了。

最佳答案

更新:

此解决方案似乎不再足够(~ iOS 7+ 或 7.1+)。我将原始答案留作历史引用,以防它有助于基于这个过时的解决方案产生 future 的解决方案:


这取决于您所说的应用是什么意思。如果您谈论的是非图形背景服务,那么您需要的是启动守护进程。 See here for how to create a launch daemon .

如果您有一个普通的 UI 应用程序,但当用户按下主页按钮时,您希望它在后台保持清醒状态,时间不受限制,then you can use some undocumented Background Modes in your app's Info.plist file :

<key>UIBackgroundModes</key>
<array>
<string>continuous</string>
<string>unboundedTaskCompletion</string>
</array>

然后,当 iOS 准备好将您的应用置于后台时(例如,用户按下主页按钮),您可以在您的应用委托(delegate)中执行此操作:

@property (nonatomic, assign) UIBackgroundTaskIdentifier bgTask;


- (void)applicationDidEnterBackground:(UIApplication *)application {

// Delay execution of my block for 15 minutes.
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 15 * 60 * NSEC_PER_SEC), dispatch_get_current_queue(), ^{
NSLog(@"I'm still alive!");
});

self.bgTask = [application beginBackgroundTaskWithExpirationHandler:^{
// should never get here under normal circumstances
[application endBackgroundTask: self.bgTask];
self.bgTask = UIBackgroundTaskInvalid;
NSLog(@"I'm going away now ....");
}];
}

通常,iOS 最多只给您 10 分钟的时间让您的 UI 应用程序在后台运行。使用未记录的后台模式,您将能够在 10 分钟的限制后保持活力。

注意:需要与 MobileSubstrate Hook 。如果您使用的是第二种方法(未记录的后台模式),那么它确实需要将您的应用程序安装在 /Applications/ 中,而不是在正常的沙箱区域(/var/mobile/Applications/).

关于iphone - 使应用程序在后台无限制地保持事件状态(对于 Cydia 应用程序),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8626928/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com