1

私の理解では、ユーザーの携帯電話番号を見つけるためにiPhoneSDKで利用できるパブリックAPIはありません。

4.0 SDKで追加されたコアテレフォニーフレームワークを使用してiPhoneユーザーの携帯電話番号を見つけることができますか?

4

3 に答える 3

7

はい、できますが、注意が必要です。これには、iOSプライベートAPIの使用が含まれます。これにより、App Storeに投稿する場合に、Appleがアプリを拒否するように決定されます。

これが私がしたことです:

  1. class-dumpユーティリティをダウンロードしてインストールします:http: //www.codethecode.com/projects/class-dump/
  2. コマンドラインで次のフォルダーに移動します: /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/System/Library/Frameworks/CoreTelephony.framework そして次のコマンドを実行します。

    クラスダンプCoreTelephony>CoreTelephony.h

    これにより、現在のディレクトリにヘッダーファイルが作成されます。このファイルを目的のディレクトリに移動します。

  3. Xcodeプロジェクトで、CoreTelephony.frameworkをインポートします(Xcode 4:プロジェクトターゲットをクリックします->[ビルドフェーズ]タブ->[バイナリとライブラリをリンク]->+->iOSリストでCoreTelephony.frameworkを選択します->[追加]をクリックします)
  4. 上記と同じ方法を使用してCoreTelephony.hファイルをインポートしますXcode4:プロジェクトターゲットをクリックします->[ビルドフェーズ]タブ->[バイナリをライブラリにリンク]->+->[その他を追加]->Finderでファイルを選択します)
  5. CoreTelephony.hファイルの最後に、以下を追加します。

    extern NSString *CTSettingCopyMyPhoneNumber();
    
  6. CoreTelephony.hをコードにインポートし、上記の関数を呼び出します。
  7. プロジェクトをビルドするときに、CoreTelephony.hにコンパイルエラーがある場合があります。通常、インターフェイス宣言は、別のインターフェイス宣言またはプロトコルシーケンスが正しく記述されていない前に移動する必要があります。
  8. リンクエラーが発生した場合は、プロジェクトターゲットのビルド設定で次のリンクフラグを使用してください。

    -force_flat_namespace 
    -undefined suppress 
    

    (Xcode 4:プロジェクトターゲットをクリック->ビルド設定タブ->リンク->その他のリンカーフラグプロパティの値セクションをダブルクリック->+->上記のフラグを追加->完了

  9. これで、その電話番号を取得できるようになります:)
于 2012-02-08T10:38:29.470 に答える
3

いいえ、CoreTelephonyフレームワークは、通信事業者に関するいくつかの基本情報と通話に関する限られた情報を提供しますが、それ以外はあまり提供しません。

制限される情報には、現在アクティブな通話の量、通話ID(携帯電話番号ではなく、OSが特定の通話を追跡するために使用する一意のIDのみ)、通話の状態(通話が保留されているかどうかなど)などが含まれます。か否か。

CallTelephonyの主な機能は、通信事業者がVoIPover3Gを許可しているかどうかを確認するAPIです。

于 2010-08-04T16:25:58.437 に答える
0

通話履歴から携帯電話番号を取得したい場合は、このリンクを参照してください。しかし、このアップルを使用した後、私はあなたのアプリを証明するかどうかはわかりません。 通話の詳細

于 2012-03-16T06:46:59.237 に答える