iOS:检测不活动或定期启动应用程序

iOS:检测不活动或定期启动应用程序,ios,background,locking,wakelock,user-inactivity,Ios,Background,Locking,Wakelock,User Inactivity,是否可以在应用程序范围之外的iOS上检测到不活动? 如果不是,即使在前台也可以定期启动应用程序吗?我的目标是在用户不与设备交互的情况下,在一段时间后循环播放一些视频。 任何变通方法或私有API都是可行的解决方案 提前谢谢 基于苹果对iPhone/iPod/iPad的限制,你不允许对用户的设备进行这样的控制 因此,实际上没有可能的方法来实现这一点,除非你有可能越狱你的设备,我没有更多的进一步了解这一点 希望这有帮助 在越狱的iOS设备上,如果设备未锁定/进入睡眠状态,则可以使用启动守护进程执行类似

是否可以在应用程序范围之外的iOS上检测到不活动? 如果不是,即使在前台也可以定期启动应用程序吗?我的目标是在用户不与设备交互的情况下,在一段时间后循环播放一些视频。 任何变通方法或私有API都是可行的解决方案


提前谢谢

基于苹果对iPhone/iPod/iPad的限制,你不允许对用户的设备进行这样的控制

因此,实际上没有可能的方法来实现这一点,除非你有可能越狱你的设备,我没有更多的进一步了解这一点


希望这有帮助

在越狱的iOS设备上,如果设备未锁定/进入睡眠状态,则可以使用启动守护进程执行类似操作。(如果设备被锁定,也可以这样做,但我不知道如何操作。)

我将简要介绍一下这些步骤;如果你需要更多细节,请告诉我

首先,创建一个启动守护进程。您不想将
UIApplication
用于启动守护程序,因此应该创建一个自定义
main()
函数。要使其始终在后台运行,您需要将plist文件添加到
/Library/LaunchDaemons
,名为
com.yourcompany.yourdaemonname

输入以下键应能使其正常工作:

<key>Label</key>
<string>com.yourcompany.yourdaemonname</string>

<key>MachServices</key>
<dict>
    <key>com.yourcompany.yourdaemonname</key>
    <true/>
</dict>

<key>ProgramArguments</key>
<array>
    <string>/path/to/daemon/executable</string>
</array>

<key>UserName</key>
<string>mobile</string>

<key>OnDemand</key>
<false/>

<key>StandardErrorPath</key>
<string>/dev/null</string>

<key>Disabled</key>
<false/>

我真的,真的希望这不可能!
#import <dlfcn.h>
#define SBSERVPATH "/System/Library/PrivateFrameworks/SpringBoardServices.framework/SpringBoardServices"
...
void* sbServices = dlopen(SBSERVPATH, RTLD_LAZY);
int (*SBSLaunchApplicationWithIdentifier)(CFStringRef identifier, Boolean suspended) = dlsym(sbServices, "SBSLaunchApplicationWithIdentifier");
int result;
result = SBSLaunchApplicationWithIdentifier(CFSTR("com.yourcompany.youruiapp"), false);
dlclose(sbServices);