使用Core电话的iPhone手机号码

时间:2010-08-04 16:19:20

标签: ios iphone phone-number core-telephony

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

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

3 个答案:

答案 0 :(得分: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选项卡 - >链接二进制 图书馆 - > + - >选择iOS列表中的CoreTelephony.framework - >点击添加)
  4. 使用与上述Xcode相同的方法导入CoreTelephony.h文件 4:点击项目目标 - > Build Phases选项卡 - >链接二进制 随着图书馆 - > + - >添加其他 - >在Finder中选择您的文件)
  5. 在CoreTelephony.h文件的末尾添加以下内容:

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

    -force_flat_namespace 
    -undefined suppress 
    

    (Xcode 4:点击项目目标 - > gt;构建设置选项卡 - >链接 - >双击值部分 其他链接器标志属性 - > + - >在上面添加标志 - >完成

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

答案 1 :(得分:3)

不,CoreTelephony框架提供了有关运营商的一些基本信息以及有关呼叫的有限信息,而不是其他信息。

有限的信息包括当前活动呼叫的数量,呼叫ID(不是移动电话号码,只是操作系统用来跟踪特定呼叫的唯一ID)和呼叫状态,例如是否呼叫暂停与否。

CallTelephony的主要功能是用于检查运营商是否允许通过3G进行VoIP的API。

答案 2 :(得分:0)

如果你想从通话记录中获取手机号码,那么看到这个链接可能会有所帮助。但我不确定使用这个苹果后会启用你的应用程序。 call details