2013-09-23 8 views
8

は、我々はそれがiOSの7で動作するようには思えないアプリからの呼び出しを行う(および発信者IDにiOS 7の代わりにCTCall?

を隠すことができるように

CTCallRef CTCallDial(CFStringRef number); 

を使用し、当社の企業向けiOSアプリでAPIが変更されていますそこには?

(これはプライベートAPI呼び出しであり、いつでも変更できることを完全に認識していますが、私はまだ代替案を探しています。悲しいことに、利用可能なプライベートAPI)

+0

プライベートObj-C APIを検査するために 'class-dump'または' class-dump-z'をダウンロードしてください。 – Nate

答えて

2

私は2時間後にあなたのポストここにStackOverflowで同じ質問... この機能が欠落していることを、クラスのダンプ(https://github.com/EthanArbuckle/IOS-7-Headers/blob/master/Frameworks/CoreTelephony.framework/CTCall.h)のショー、初めて目に...

+0

TUCallCenter(https://github.com/EthanArbuckle/IOS-7-Headers/blob/master/PrivateFrameworks/TelephonyUtilities.framework/TUCallCenter.h)のヘッダファイルには、 " - (id)dial: (id)arg1 service:(int)arg2 "しかし、sharedInstanceがnullを返すため、TUCallcenterのインスタンスを取得できません。 – ErdyMurphy

+0

私は間違いをしました... sharedInstance doest return nil ... – ErdyMurphy

+0

[TUCallCenter sharedInstance]ダイヤル:@ "123" service:0];私はCTCallDial()と同じ動作をしました – ErdyMurphy

-1

あなたは

[[のUIApplication sharedApplication]を使用することができますopenURL:[NSURL URLWithString:[NSString stringWithFormat:@ "tel:%@"、num]]];

は、しかし、あなたは、コールが

+0

に入る方法かもしれません。@ErdyMurphyが他の答えで言及したように、この方法では制御シーケンスを電話アプリに送信することはできません。発信者IDを隠すために必要なもの – clows

0

を終了していないに近い通話画面には、実際に私はvualoaithuと同じを試してみましたが、運を持っていないしましたことができます。しかし、私はTUCallCenterオブジェクトの他のメソッドを使用しようとしましたが、うまく動作するように見えます。また

TUCallCenter *callCenter = [TUCallCenter sharedInstance]; 
if(callCenter) { 
    NSLog(@"callCenter is created!"); 
    //Working part 
    if([callCenter inCall]){ 
     NSLog(@"IN CALL"); // when you press answer button and can talk 
    }else{ 
     NSLog(@"NOT IN CALL"); // other cases 
    } 
} 

私が試した次:たとえば次のような方法では動作します

TUPhoneNumber* phoneNumber = 
    [TUPhoneNumber phoneNumberWithDigits:@"55555555" 
          countryCode:@"1"]; 
if(phoneNumber) { 
    NSLog(@"Phone Number obj = %@",phoneNumber); 
    NSLog(@"Phone Number = %@",phoneNumber.digits); 
    NSLog(@"Country Code = %@",phoneNumber.countryCode); 
} 
[callCenter dial:phoneNumber service:0]; 

をしかし、私は例外だ:

[TUPhoneNumber長]:認識されていないセレクタがインスタンスに送信し0x14dcefd0

私たちは途中でいるように見えます。誰かが解決策を見つけたら。ここに投稿してください。おかげさまで

3

com.apple.coretelephony.Calls.allow資格であなたのアプリに署名する必要があると思います。私はSpringBoardバイナリで見つけました。アップルは新たなライセンスを追加しました。ですから、多くのAPIはAPIなしでは動作しません。 CoreTelephonyのみの場合、SpringBoardには4つのエンタイトルメントがあります。

+0

'com.apple.coretelephony.Calls.allow'が解決策であることを確認できます。この権限がなければ、 'CTCallDial'で電話をかけることはできません。 – creker

+0

私は、SpringBoardServices、SpringBoardFoundation、SpringBoardUI、SpringBoardUIServicesにclass-dumpを使用しました。**しかし、com.apple.coretelephony.Calls.allow **は表示されません。助けてください – vualoaithu

+1

私は 'SpringBoard.app/SpringBoard'バイナリについて話していました。 '/ System/Library/CoreServices/SpringBoard.app/SpringBoard'や' Xcode.app/Content/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.0のiOSシミュレータであなたのデバイスで見つけることができます。 sdk/System/Library/CoreServices/SpringBoard.app/SpringBoard'を実行します。任意のテキストエディタでバイナリを開き、最後までスクロールします。あなたは 'com.apple.coretelephony.Calls.allow'の多くの資格を見つけるでしょう – creker

関連する問題