web-dev-qa-db-ja.com

Siriは、プライベートAPIを使用してアプリ内でプログラムで呼び出すことができますか?

ユーザーにホームボタンを押し続ける代わりに、プログラムでSiriをアプリケーション内で起動したいと思います。これを実現するために利用できるパブリックAPIがないため、誰かがいるかどうか知りたいです。プログラムでプライベートAPIを介してSiriを起動できましたか?もしそうなら、どのプライベートAPIを使用しましたか?

Siriからの戻り値には興味がありません。私がしたいのはそれを起動することです。

16
user2752939

答えは、これがApp Storeにアクセスしないアプリ(エンタープライズアプリ、または個人/ホビーアプリ)用か、実際に実行されるかどうかによって少し異なりますjailbroken電話。

ジェイルブレイクされた電話やMobileSubstrateのようなジェイルブレイクユーティリティに頼ることができるなら、Siriと同じように Ryan PetrichのlibActivatorが行うこの他の答えに表示

ただし、通常のjailed電話用に構築している場合でも、ユーザーが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 。明らかに、これら2つのヘッダーをダウンロードして、プロジェクトに追加する必要があります。

このコードはGraphicsServicesプライベートフレームワークに含まれているため、そのフレームワークをプロジェクトに追加する必要もあります。通常のフレームワークを追加するのと同じように行いますが、次のような場所を参照する必要があります

/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/System/Library/PrivateFrameworks/GraphicsServices.framework

それを見つけるために(XcodeインストールディレクトリとSDKに合わせて調整されたパス)。

免責事項:ジェイルブレイクされた電話でこれをテストしましたが、それは間違いなく通常のアプリ内にあり、/var/mobile/Applications/サンドボックス領域にインストールされていました。99%は、依存することは何もしていないと確信しています。ジェイルブレイクされたとき。

13
Nate

いいえ。 Siriにアクセスできません。アクセスできれば、どういうわけかAppleはあなたのアプリを拒否するでしょう。(しかし、感謝する人はもっとたくさんいると思います)

ただし、これがあります: http://ps3trophies.com/forums/Apple/6458-siri-cracked-now-even-Android-users-can-use-siri.html

この回答も参照してください: https://stackoverflow.com/a/12607905/2535467

1
CaptJak