iPhone手机号码使用核心电话

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

我们能否使用4.0 SDK中添加的Core电话框架findiPhone用户的手机号码?

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

有限的信息包括诸如当前活动呼叫的数量,呼叫ID(不是手机号码,只是操作系统用于跟踪特定呼叫的唯一ID)以及呼叫状态,例如呼叫是否被保持或不。

CallTelephony的主要function是检查运营商是否允许通过3Gnetworking的VoIP。

是的,你可以,但是很棘手。 它涉及使用iOS私人API,这将确定苹果拒绝您的应用程序,以防您想要将其发布到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并执行以下命令:

    类转储CoreTelephony> CoreTelephony.h

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

  3. 在你的Xcode项目中,导入CoreTelephony.framework(Xcode 4:点击项目目标 – >构build阶段标签 – >与库链接二进制 – > + – >在iOS列表中selectCoreTelephony.framework – >点击添加)
  4. 使用上面相同的方法导入CoreTelephony.h文件Xcode 4:点击项目目标 – >构build阶段选项卡 – >与库链接二进制文件 – > + – >添加其他 – >在Finder中select你的文件)
  5. 在CoreTelephony.h文件的末尾,添加以下内容:

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

     -force_flat_namespace -undefined suppress 

    (Xcode 4:点击项目目标 – > Build Settings tab – > Linking – >双击Other Linker Flags属性的values部分 – > + – >在上面添加标志 – > Done

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

如果你想从通话logging中获得手机号码,那么看看这个链接可能是有帮助的。 但我不知道,使用这个苹果后,将推动你的应用程序。 通话详情