【问题标题】:Read SMS message in iOS在 iOS 中阅读短信
【发布时间】:2013-04-17 18:13:17
【问题描述】:

我是一名 iOS 开发人员,我试图构建一个具有自动激活功能的移动应用程序,我发现不仅仅是阅读 SMS 消息的方法,而且只使用私有 API,这会导致 Apple 拒绝我的应用程序。,我有两个问题并感谢任何反馈可以帮助我。

  1. 有没有什么方法可以在iOS平台上阅读短信而不被苹果拒绝?
  2. 谁能提供苹果开发者文档中的相关部分,描述在iOS平台上不允许阅读短信的部分?

【问题讨论】:

  • 能否提供私有API的链接?
  • 你好,能介绍一下这个私有api吗?

标签: ios swift sms appstore-approval ios12


【解决方案1】:
  1. 不,没有办法阅读 SMS 消息。出于隐私考虑,Apple 对此非常严格。
  2. 登录开发者门户,点击App Store Review Guidelines

指南中没有任何地方指定您不能访问 SMS。但是只有使用不允许的私有方法才能访问,这会导致您的应用被拒绝。

您只能访问 Apple 为其提供文档化 API 的数据。除非 Apple 为其提供 API,否则您无法访问应用程序沙盒之外的文件。

【讨论】:

  • 你好,你能告诉我这个api吗?
  • 你说的是哪个 API?
  • 他们使用蓝牙协议向 iOS 注册手表以接收通知。您无法在自己的应用中访问它们。
  • @daylight 它确实提到您无法访问这些消息。但我认为他们已经改变了它,因为 iMessage 应用程序的引入。
  • @Bawantha 他们没有,Apple 没有用于读取 SMS 的公共 API。
【解决方案2】:

更新

从 iOS 12 开始,Apple 支持读取文本字段中的安全代码(OTP - 一次性密码)。

oneTimeCode

指定对单因素 SMS 登录代码的期望。

您可以自动完成单因素 SMS 登录流程中的安全代码:

yourSingleFactorCodeTextField.textContentType = .oneTimeCode

iOS 支持在 UITextField、UITextView 和任何 采用 UITextInput 协议的自定义视图。

警告

如果您对安全代码输入文本字段使用自定义输入视图, iOS 无法显示必要的自动填充 UI。

【讨论】:

    【解决方案3】:

    iOS 12 开始,Apple 将在 UITextFieldUITextView 和任何采用 UITextInput protocol 的自定义视图上支持密码自动填充。系统键盘将其上的textContentType设置为.oneTimeCode

    • 使用情节提要/XIB

    storyboard/XIB中选择UITextField/UITextView 点击点击属性 检查员。转到文本输入特征,单击内容类型并选择 一次编码就完成了。

    它只适用于系统键盘。所以避免使用自定义键盘。


    如需更多信息,您还将查看 WWDC 2018 Session 204 - Automatic Strong Passwords and Security Code AutoFill 并跳转到 24:28 以自动预填充 OTP。

    【讨论】:

      【解决方案4】:

      支持 - 自 iOS 12 起

      流,在 iPhone 上自动填写短信密码 - https://support.apple.com/en-in/guide/iphone/iphc89a3a3af/13.0/ios/13.0

      实施指南 - https://developer.apple.com/documentation/security/password_autofill/enabling_password_autofill_on_a_text_input_view

      当您登录某些应用程序和网站时,一次性短信密码是 发送到您的 iPhone。作为一项安全措施,您需要输入 将代码放入应用程序或网站。 iPhone可以检测到密码 消息并将其显示在键盘上方。

      要使用密码,请点按它。

      【讨论】:

        【解决方案5】:

        对于 Swift 5:

        iOS 12 开始,Apple 支持读取文本字段中的安全代码(OTP - 一次性密码)。

        if #available(iOS 12.0, *) {
                       otpField.keyboardType = .default
                       otpField.textContentType = .oneTimeCode
               } else {
                       // Fallback on earlier versions
        
               }
        

        或者您可以从情节提要中添加此 contentType,如下所示:

        【讨论】:

          猜你喜欢
          • 2018-11-20
          • 2010-10-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多