我不想让用户按住主页按钮,而是想在我的应用程序中以编程方式启动 Siri。由于没有可用的公共 API 来完成此操作,我想知道,是否有人能够通过私有 API 以编程方式启动 Siri,如果可以,您使用了哪个私有 API?
我对 Siri 的任何返回值都不感兴趣。我想做的就是启动它。
我不想让用户按住主页按钮,而是想在我的应用程序中以编程方式启动 Siri。由于没有可用的公共 API 来完成此操作,我想知道,是否有人能够通过私有 API 以编程方式启动 Siri,如果可以,您使用了哪个私有 API?
我对 Siri 的任何返回值都不感兴趣。我想做的就是启动它。
答案在一定程度上取决于这是否适用于不会进入 App Store 的应用程序(企业应用程序或个人/爱好应用程序),或者它是否真的会在越狱手机上运行。
如果您可以依靠越狱手机和 MobileSubstrate 等越狱实用程序,那么我相信您可以像Ryan Petrich 的 libActivator 那样实现一种打开 Siri 的方法,正如我在另一个答案中所展示的那样。
但是,如果您正在为普通的入狱手机构建,我仍然认为您可以通过模拟用户打开 Siri 的方式来“破解”它(使用私有 API)。首先,按下主页按钮,按住它一会儿,然后松开。
此代码适用于我(iOS 6.1):
#import "GSEvent.h"
和
- (void)launchSiri {
[self simulateTouchEvent: kGSEventMenuButtonDown];
double delayInSeconds = 1.0;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
[self simulateTouchEvent: kGSEventMenuButtonUp];
});
}
- (void)simulateTouchEvent: (GSEventType)type
{
struct GSEventRecord record;
memset(&record, 0, sizeof(record));
record.type = type;
record.timestamp = GSCurrentEventTimestamp();
GSSendSystemEvent(&record);
}
这依赖于 GSEvent.h 标头,它不是公共标头集的一部分。我相信我在这里得到了我的,以及它引入的 GSWindow.h。显然,您需要下载这两个标头并将它们添加到您的项目中。
此代码位于GraphicsServices私有框架中,因此您还需要将该框架添加到您的项目中。这样做就像添加一个普通的框架,但你需要浏览到类似的地方
/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/System/Library/PrivateFrameworks/GraphicsServices.framework
找到它(针对您的 Xcode 安装目录和 SDK 调整的路径)。
免责声明:我确实在越狱手机上进行了测试,但它绝对是在一个普通的应用程序中,安装在/var/mobile/Applications/
沙盒区域,我 99% 确定我没有做过任何取决于越狱的事情。
没有。无法访问 Siri。我很确定,如果您确实获得了访问权限,Apple 会以某种方式拒绝您的应用程序。(但我能想到更多会感激的人)
不过有这个:http: //ps3trophies.com/forums/apple/6458-siri-cracked-now-even-android-users-can-use-siri.html