Siri可以在我的应用程序中使用私有API进行编程调用吗?

而不是让用户按住home键,我想在程序中以编程方式启动Siri。 由于没有可用的公共API来实现这一点,我想知道,如果有人能够通过私有API以编程方式启动Siri,并且如果有的话,您使用了哪个私有API?

我对Siri的任何返回值都不感兴趣。 我想要做的就是启动它。

答案取决于是否这是一个应用程序,只是不会去应用程序商店(企业应用程序,或个人/业余爱好的应用程序),或者它将实际上运行在越狱手机上。

如果你可以依靠一个越狱手机和像MobileSubstrate这样的越狱工具,那么我相信你可以像Ryan Petrich的libActivator那样实现一个打开Siri的方法,正如我在其他回答中所展示的那样 。

但是,如果你正在为普通的监狱电话build设,我仍然认为你可以通过模拟用户打开Siri的方式来“破解”它(使用Private APIs)。 首先,按主页button,保持一会儿,然后释放它。

此代码适用于我(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 

find它(path调整为您的Xcode安装目录和SDK)。

免责声明:我在越狱手机上testing过这个,但是它绝对是在一个普通的应用程序里,安装在/var/mobile/Applications/ sandbox区域,我确信我没有做任何依赖于越狱。

不。 没有访问Siri。 我非常肯定,如果你有机会获得访问权,苹果会拒绝你的应用程序。 (但是我可以想到更多谁将会感激)

有这个,但: http : //ps3trophies.com/forums/apple/6458-siri-cracked-now-even-android-users-can-use-siri.html

看到这个答案以及: https : //stackoverflow.com/a/12607905/2535467