使用Core电话的iPhone手机号码

Ani*_*das 1 iphone phone-number ios core-telephony

据我了解,iPhone SDK中没有可用的公共API来查找用户的手机号码.

我们可以使用4.0 SDK中添加的Core电话框架找到iPhone用户的手机号码吗?

Cri*_*tez 7

是的,你可以,但这很棘手.它涉及使用iOS私有API,这将决定Apple拒绝您的应用程序,以防您想要在App Store上发布它.

这是我做的:

  1. 下载并安装类转储实用程序:http: //www.codethecode.com/projects/class-dump/
  2. 在命令行中转到此文件夹: /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/System/Library/Frameworks/CoreTelephony.framework 并执行以下命令:

    class-dump CoreTelephony> CoreTelephony.h

    这将在当前目录中创建一个头文件.将此文件移动到所需目录中.

  3. 在你的Xcode项目中,导入CoreTelephony.framework(Xcode 4:点击项目目标 - > Build Phases选项卡 - > Link Binary With Libraries - > + - >选择iOS列表中的CoreTelephony.framework - >单击Add)
  4. 使用与上面相同的方法导入CoreTelephony.h文件Xcode 4:点击项目目标 - > Build Phases选项卡 - > Link Binary With Libraries - > + - > Add Other - >在Finder中选择你的文件)
  5. 在CoreTelephony.h文件的末尾,添加以下内容:

    extern NSString *CTSettingCopyMyPhoneNumber();
    
    Run Code Online (Sandbox Code Playgroud)
  6. 在代码中导入CoreTelephony.h并调用上面的函数.
  7. 在构建项目时,您可能会发现CoreTelephony.h中存在编译错误 - 通常是在另一个接口声明或协议序列写错之前需要移动的接口声明
  8. 如果您有链接错误,请在项目目标的构建设置中使用以下链接标志:

    -force_flat_namespace 
    -undefined suppress 
    
    Run Code Online (Sandbox Code Playgroud)

    (Xcode 4:点击项目目标 - > Build Settings选项卡 - >链接 - >双击Other Linker Flags属性的值部分- > + - >上面添加标志 - >完成

  9. 到现在你应该可以得到那个电话号码:)