使应用程序在越狱设备上自行重启

2024-04-10

我的 iOS 应用程序是否可以在每次用户访问其主屏幕时自动重新启动?这是针对越狱设备的——该应用程序不适用于应用程序商店。

一般来说,鉴于应用程序外部的特定用户操作,如何让我的应用程序重新启动?


加速度计

如果您只想让您的应用程序在遇到某些加速计条件时运行,您可以使用Activator为了那个原因。 Activator 是一个很棒的应用程序,由瑞安·佩特里奇 https://stackoverflow.com/users/4007/rpetrich,在 Cydia 上免费提供。它允许您将设备配置为在执行特定用户操作时运行任何应用程序(或切换)。这可能是按下主页按钮、按下电源/锁定按钮或加速计震动。

如果有基本的shake不是您想要的,或者您正在构建一个应用程序来提供给许多用户,并且不希望他们自己设置 Activator,那么您可能需要自己编写一些代码。

例如,你可以写一个启动守护进程 http://chrisalvares.com/blog/7/creating-an-iphone-daemon-part-1/, 除了您的主 UI 应用程序之外,并有启动守护进程监控加速度计。 http://developer.apple.com/library/ios/#documentation/EventHandling/Conceptual/EventHandlingiPhoneOS/MotionEvents/MotionEvents.html#//apple_ref/doc/uid/TP40009541-CH4-SW5

当您检测到您感兴趣的特定运动类型时,您可以使用以下命令启动您的 UI 应用程序open command https://stackoverflow.com/a/11713035/119114。如果这仅供您自己使用,只需下载open来自 Cydia 的包。如果这是为了发布给其他人,请确保您的应用程序依赖于open以确保其已安装。例如,如果打包在 Debian .deb 包中,DEBIAN/control 文件可能包含以下内容:

Depends: open

确保安装您的应用程序的用户也会自动获得open,您的应用程序需要。

Unlock

您的另一个问题涉及用户解锁手机时启动应用程序。再次,我将使用您的启动守护程序来侦听这种情况。在 iOS 5 上,当我解锁手机时,我会看到此通知:

拦截通知:com.apple.springboard.lockstate

(我通过运行检测到这一点notificationWatcher从命令行使用实用程序,同时通过 SSH 连接到我的手机。作为 Erica Sadun 的一部分,NotificationWatcher 也可以从 Cydia 获得埃里卡公用事业包裹)

所以,我想要你的启动守护进程注册达尔文通知 https://developer.apple.com/library/mac/documentation/CoreFoundation/Reference/CFNotificationCenterRef/Reference/reference.html#//apple_ref/c/func/CFNotificationCenterAddObserver for "com.apple.springboard.lockstate"。像这样的东西:

CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCenter(), //center
                                self, // observer: can be NULL if callback doesn't need self
                                onLockStateChanged, // callback
                                CFSTR("com.apple.springboard.lockstate"), // name
                                NULL, // object
                                CFNotificationSuspensionBehaviorDeliverImmediately);

回调函数在这里:

static void onLockStateChanged(CFNotificationCenterRef center, void *observer, CFStringRef name, const void *object, CFDictionaryRef userInfo) {
    // if you need access to member data (ivars):
    MyLaunchDaemon* this = (MyLaunchDaemon*)observer;

    //if (userInfo != nil) {
    //    CFShow(userInfo);
    //}
    NSDictionary* info = (NSDictionary*)userInfo;
    // I'm not sure if the userInfo object has any useful
    //  description for the lock state event

    if (/* unlocked */) {
        // force app to open, or resume from the background
        system("/usr/bin/open com.mycompany.MyAppName");
    }
}

当屏幕锁定或解锁时,我会看到相同的通知,因此您可能需要让启动守护程序跟踪锁定/解锁状态,或检查userInfo对象以查看是否告诉您这是锁定事件还是解锁事件。我确信还有其他方法。

Update:如果您需要帮助确定屏幕锁定或解锁时是否出现通知,您可以查看我的Update 2 在这个其他答案中 https://stackoverflow.com/a/14357568/119114. notify_get_state()可用于确定事件是开启事件还是关闭事件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使应用程序在越狱设备上自行重启 的相关文章

  • ios 导航 堆栈操作

    我在尝试从 iOS 应用程序操作导航堆栈时遇到问题 或者至少是由于这种操纵而产生的行为 我的情况 我有 3 个 ViewController 控制器a显示多个级别 控制器 b 是游戏视图 控制器 c 是某种分数 显然 我将在控制器 a 中选
  • 企业发行版在 Swift 应用程序中与 iOS8 配合不佳

    我在使用 swift 应用程序在 iOS 8 设备上运行 Enterprise 版本时遇到问题 如果我使用非企业帐户进行代码签名 它似乎工作正常 有人遇到这个问题吗 以下是我在尝试使用企业帐户运行构建以进行协同设计时在 iOS 设备上收到的
  • ios - Gamekit 的 GKOctree 未找到元素

    我正在尝试使用GKOctree https developer apple com documentation gameplaykit gkoctree用于高效检索 3D 空间中的对象 然而 以下代码似乎没有按预期工作 import Gam
  • 设置/覆盖 UICollectionView 中单元格之间的填充

    我有一个 UICollectionView 但在获取单元格之间的填充时遇到了问题 理论上 我应该能够将屏幕除以 4 并且我可以获得包含 4 个图像的单元格大小 完美地占据屏幕宽度 但是 它选择不这样做 相反 它会创建 3 个具有巨大填充的图
  • iOS 上的 UIBezierPath 操作

    我从一条直线开始 我希望用户能够触摸并拖动该线 使其弯曲 实际上 他们有能力将线条操纵成波浪形状 我不确定从技术上实现这一目标的最简单方法 我首先创建了三次曲线的 UIBezierPaths 数组 目的是操纵控制点 但似乎一旦绘制了 UIB
  • 在 iOS 上使用 Web 服务的最佳方式?

    我想构建一个 iOS 应用程序 让您登录到网络服务 之后 应用程序将 当用户选择时 通过 https 发送登录名 密码以及请求的变量 例如 在请求 新闻更新 后 它将收到 XML 格式的请求信息 类似于
  • 为什么在授予用户权限时,UIUserNotificationType.None 在当前设置中返回 true?

    我正在编写一种方法来检查当前用户设置是否包含某些通知类型 当检查当前设置是否包含 UIUserNotificationsType None 时 无论授予权限还是拒绝权限 它都会返回 true 有谁知道这是为什么吗 func register
  • iPhone UINavigationBar 使用 [UINavigationBar 外观] 更改所有控制器的字体样式

    我知道我可以单独更改导航栏的字体 如本答案所述 更改导航栏的字体 https stackoverflow com questions 5832036 change the navigation bars font 目前我正在使用一种更全局的
  • 错误域=AVFoundationErrorDomain代码=-11814“无法记录”

    它不断给我错误 错误域 AVFoundationErrorDomain代码 11814 无法记录 我不确定问题是什么 我试图在拍照后计数器达到 1 时录制声音 static int counter counter will always b
  • 使用 NSError 检查错误的正确结构

    我正在编写各种例程 并尽力保持其整洁和重构 我正在创建的方法开始看起来与此代码类似 IBAction buttonPress id sender Create Document Shopping List with this documen
  • 所需框架与静态库

    构建现代框架 https developer apple com videos play wwdc2014 416 says 每个应用程序都有自己的自定义框架副本 https stackoverflow com a 15262463 242
  • 添加自定义过渡会导致 xib 加载错误的屏幕尺寸

    我正在尝试向具有 xib 的 UIViewController 添加自定义过渡 我尝试了几种方法 但它们都有相同的问题 视图显示的屏幕尺寸错误 我当前的示例基于以下教程 使用 Swift 在 iOS 中自定义 UIViewControlle
  • 进入前台后刷新数据

    更改默认设置后 我想在AppDelegate中进入前台时刷新myViewController的数据 我所做的是 AppDelegate m void applicationDidFinishLaunching UIApplication a
  • 错误:更改核心数据模型后架构armv7的重复符号

    我有一个使用核心数据框架的应用程序 我工作得很好 我刚刚更改了数据模型 向一个实体添加一个属性 当我尝试构建它时 出现错误 duplicate symbol OBJC METACLASS AccountFolder in Users XXX
  • iphone NSDate 转换问题

    在我的 facebook 图表 Api 中 我正在获取这些数据 来自杰森 updated time 2011 05 17T14 52 16 0000 我正在使用此代码将其转换为有效的日期格式 NSDateFormatter df NSDat
  • 检测 AvPlayer 何时切换比特率

    在我的应用程序中 我使用 AVPlayer 通过 HLS 协议读取一些流 m3u8 文件 我需要知道在流会话期间 客户端切换比特率多少次 我们假设客户端的带宽正在增加 因此客户端将切换到更高比特率的段 AVPlayer能检测到这个开关吗 T
  • SiriKit 错误:此应用程序不支持捐赠意图

    我在 Xcode 10 iOS 12 Beta 中捐赠自定义意图时遇到问题 我创建了一个在我的主应用程序目标和 OrderIntent 目标之间共享的自定义框架 我创建了一个 intentdefinition 文件 并将目标成员资格设置为我
  • 我怎样才能勾勒出文本字体?

    我想在边框 轮廓 中显示另一种颜色的文本 我正在尝试使用在 MapOverlayView 中显示文本 text drawAtPoint CGPointMake 0 30 withFont UIFont fontWithName Helvet
  • NVActivityIndi​​catorView 仅适用于特定视图

    我正在使用这个库https github com ninjaprox NVActivityIndi catorView https github com ninjaprox NVActivityIndicatorView用于显示加载指示器
  • 分发内部业务 IOS 应用程序

    我遇到了 IOS 应用程序分发的一个令人困惑的部分 因此 我需要简单细分一下我的限制 即仅将我的应用程序分发给我的员工 同事或任何被视为 内部 的人 这是表明我不希望该应用程序出现在应用程序商店中的另一种方式 我的情况是我为几家公司开发 他

随机推荐

  • 告诉 Iron Router 不要拦截链接

    我正在将相当大的应用程序迁移到 Iron Router 在客户端 所有未知路由都被重定向到 404 此外 有些路由是从服务器端管理的 例如 static 仅通过中间件显示静态页面 问题是 Iron Router 现在拦截所有链接点击 所以当
  • 通过 Azure AD Graph API 作为电子邮件别名发送电子邮件

    在 Graph API 浏览器中 您可以使用端点发送电子邮件 https graph microsoft com v1 0 me sendMail https graph microsoft com v1 0 me sendMail和一个基
  • 如何生成一定范围内的加密安全随机整数?

    我必须为生成密码的程序生成给定范围内的统一 安全的随机整数 现在我用这个 RNGCryptoServiceProvider rng new RNGCryptoServiceProvider byte rand new byte 4 rng
  • ASP.NET MVC GetFullHtmlFieldId 未返回有效 ID

    我已经看过了 但它对我没有帮助 GetFullHtmlFieldId 返回错误的 id 属性值 https stackoverflow com questions 15457883 getfullhtmlfieldid returning
  • Excel 中的排序保持风格?

    我得到了一个带有交替背景的 Excel 文件 以提高可读性 Row 1 White Background Row 2 Gray Background Row 3 White Backgrund 我使用 VBA 函数对 Excel 文件的内容
  • Rust 中模式匹配中的类型注释?

    我正在深入研究 Rust 特别是优雅地处理错误 但我在类型推断方面遇到了一些麻烦 extern crate mysql use mysql as my fn main my test fn my test gt Result lt my E
  • Oracle SQL 将日期格式从 DD-Mon-YY 转换为 YYYYMM

    我要比较 2 个表中的日期 但问题是一个表的日期采用 DD Mon YY 格式 另一个表的日期采用 YYYYMM 格式 我需要将它们都设为 YYYYMM 进行比较 我需要创建这样的东西 SELECT FROM offers WHERE of
  • 为什么元素在警报之前不显示?

    在这个简单的例子中https jsfiddle net 4rsje4b6 1 https jsfiddle net 4rsje4b6 1 为什么是 test在警报出现之前元素未显示 jQuery 不应该吗 css 方法是同步的吗 test
  • 如何告诉 TSC 脚本文件不会共享作用域并忽略重新声明

    问题 疑问 我正在使用 VSCode 的 TS 驱动的 JS 检查功能来对一堆 JS 文件进行类型检查 这些文件将通过以下方式导入
  • 如何制作具有部分透明边框的任意大小的 html 元素?

    考虑下图 这应该看起来像一片边缘粗糙 有斑点 的草 这是一张 200x200 像素的 png 图像 边缘具有透明度以提供自然的外观 问题是 我正在尝试设计一个网页 我希望所有不同尺寸的各种元素都具有此背景 但我无法使用简单的 css 背景属
  • 如何向 Android 应用程序提供 Jacoco 代理?

    我正在尝试使用 Jacoco 进行手动测试来获得代码覆盖率 我正在尝试使用离线仪器 http www eclemma org jacoco trunk doc offline html http www eclemma org jacoco
  • 如何创建自己的 Haar 级联分类器以进行自定义对象检测? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想检测汽车 但可用的 xml 文件对于准确检测来说不太强大 如何创建自定义 xml 文件 我可以为任何对象创建 任何帮助 将不胜感激
  • 如何使用 JQuery 访问 WTForm

    我想请求有关访问 WTForm 字段的帮助 我有以下表格 class model bolt InputForm FlaskForm Bolt Inputs bolt size SelectField Bolt size mm choices
  • 动态初始化

    C 03标准 basic start init 第3点 states 是否动态是实现定义的 命名空间对象的初始化 8 5 9 4 12 1 12 6 1 作用域是在 main 的第一个语句之前完成的 如果 初始化被推迟到第一次之后的某个时间
  • 如何在使用 jQuery 添加新行时刷新简单的数据表

    我认为这个很简单 但我找不到与 ajax 加载的数据或数组中提供的数据无关的参考 我在现有的 HTML 表上使用 DataTables 基本代码如下 table wizard dataTable lengthChange false iDi
  • 测试使用 IntersectionObserver 的代码

    我的应用程序中有一个处理无限滚动分页的 JavaScript 组件 我正在尝试重写它以使用IntersectionObserver 如上所述here https developers google com web updates 2016
  • 为每个因子组添加单独的 vlines 到 ggplot(变量重要性随机森林的点图)

    我正在使用 ggplot2 制作随机森林中六个相关变量重要性结果的点图 我的数据 我已经使用 reshape2 将其转换为长格式 如下所示 我的真实数据集有点大 Factor Group Value Gender A 0 000127 Ag
  • 如何在 emacs elisp 中查找哪个文件提供该功能

    目前我正在使用加载历史记录变量来查找某个功能来自的文件 假设找到该文件的特征gnus来自 我在暂存缓冲区中执行以下代码 该代码在单独的行中连续打印文件名和符号 dolist var load history princ format s n
  • 正则表达式和 GWT

    我的问题是 在GWT中使用正则表达式有没有好的解决方案 例如 我对 String split regex 的使用不满意 GWT 将代码翻译为 JS 然后将正则表达式用作 JS 正则表达式 但我无法使用 Java Matcher 或 Java
  • 使应用程序在越狱设备上自行重启

    我的 iOS 应用程序是否可以在每次用户访问其主屏幕时自动重新启动 这是针对越狱设备的 该应用程序不适用于应用程序商店 一般来说 鉴于应用程序外部的特定用户操作 如何让我的应用程序重新启动 加速度计 如果您只想让您的应用程序在遇到某些加速计