web-dev-qa-db-ja.com

iOSで受信テキストメッセージをプログラムで読み取る方法

IPhoneに保存されているSMSメッセージにプログラムでアクセスする方法についてはたくさんの質問があります。小さな調査を行うと、Apple明らかなセキュリティ上の理由から、開発者はSMS APIまたはSMSデータベースに触れることができません。この事実を少し区別してみましょう。

私はiDriveと呼ばれる素晴らしい「インフォテインメント」システムを搭載したBMW車を所有しています。つい最近、iPhoneがUSBに接続されているときに、iDriveシステムを介して受信テキストメッセージを実際に読み取ることができることに気付きました。それは本当に私に興味をそそられました。車と電話の設定をいじってみたところ、iDriveが実際に通知センターからのテキストメッセージを表示していることがようやくわかりました。これは、新しいメッセージを受け取るたびに、ロック画面に通知として表示され、通知センターにはパブリックAPIがあるため、車がそのメッセージにアクセスできることを意味します。通知からメッセージアプリを削除するとすぐに、何も返されませんでした。

多くの方が以前考えていたように、着信テキストメッセージを監視し、メッセージ本文からスキャンされたキーワードに基づいて何らかのアクションを実行できるアプリも作成したいと思いました。

今まで、私は自分を解放するためにAndroidに移動する傾向がありましたが、着信テキストメッセージを表示する車を見ると、トンネルの終わりに光が見えます。

通知センターからエントリを読み取ることができるiOSアプリを構築する方法について誰かが手がかりを持っていますか?私はいくつかの調査を試みましたが、これは非常に広範な問題であるため、iOS通知センターの特定のドキュメントを見つけるのは難しい場合があります。

私は経験豊富なiOS開発者ではないので、どんな助けでも大歓迎です。

ところで-とにかくApple公式ドキュメントのサポートを理解することはできません。実行中のアプリの完全な例を見つけるのはちょっと混乱します。

助けてくれてありがとう。ファビオ

9
Fabio Moggi

iOS12ではAppleは読むオプションを提供しました [〜#〜] sms [〜#〜] (OTPパスワード)

システムがSMSメッセージからセキュリティコードを解析できる場合、QuickTypeバーには、受信後最大3分間コードが表示されます。テキスト入力ビューが表示されている間にセキュリティコードが到着した場合選択すると、システムは着信コードをQuickTypeバーにプッシュします。

さまざまな言語のSMSコードの形式をテストするには、自分宛てにメッセージを送信します。下線付きのセキュリティコードが記載されたメッセージを受信した場合は、コードをタップします。[コードのコピー]オプションが表示された場合は、システムがコードを認識しました。

iOSは、UITextField、UITextView、およびUITextInputプロトコルを採用するすべてのカスタムビューでパスワードオートフィルをサポートします。

単一因子SMSログインフローからセキュリティコードをオートコンプリートできます

プログラムで

yourTextField.textContentType = .oneTimeCode

ストーリーボード/ XIB

ストーリーボード/ XIBでUITextField/UITextViewを選択し、[属性インスペクター]をクリックします。テキスト入力特性に移動し、[コンテンツタイプ]をクリックして、ワンタイムコードを選択して完了します。

enter image description here

実装する前に必ず確認してください

  • セキュリティコード入力テキストフィールドにカスタム入力ビューを使用する場合、iOSは必要なオートフィルUIを表示できません。
  • システムキーボードでのみ機能します。したがって、カスタムキーボードの使用は避けてください。

AppleのMFiプログラムを使用すると、ホストにチップをインストールできます

提供されるBridgeAPIは、接続されたデバイスへの通知またはメッセージ、通話ログなどのパススルーを提供します(これは、Lightning、30ピンおよびBluetoothで機能します)

この通知センターへのアクセスは、通知設定でアプリを切り替えることで無効にできます。

アプリで行うことは、公開されているAPIのいずれからも利用できません。

3
Rajadurai

通知traからデータを読み取ることができます。Apple通知マネージャーライブラリが開いているので、実装できます。着信SMSのすべての通知を読み取るだけで、一致するものが見つかった場合は関数を起動します。

2
Shoaib Anwar

公式SDKでは不可能

ステータスが変更されているかどうかを確認することしかできません。つまり、基本的に通知を受け取った場合

1
Rayen Kamta