Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to programmatically read incoming text messages on iOS

There have been tons of questions on how to programmatically access the SMS messages stored in the iPhone. Doing a small research you will quickly and sadly find out that Apple won't let us developers touch the SMS API or SMS database due to obvious security reasons. Let's set this fact apart for a moment.

I own a BMW car that comes equipped with a fantastic "infotainment" system called iDrive. Just recently I realized that I could actually read incoming text messages through the iDrive system when my iPhone is connected to the USB. That really intrigued me. After playing around with the car and the phone configuration, I finally figured out that the iDrive was actually displaying text messages from the Notification Center. This means that every time I get a new message, it would be displayed as a notification in the lock screen and the car would be able to access it because Notification Center has public APIs. As soon as I removed the Messages app from the notification, I got nothing back.

As many of you have thought before, I also wanted to create an app that could monitor incoming text messages and take some action based on keywords scanned from the message body.

Until now, I was really inclined toward moving to Android in order to set me free, however, watching the car displaying incoming text messages makes me see some light at the end of the tunnel.

Does anybody have a clue on how to build an iOS app that can read entries from the Notification Center? I tried some research but this seems to be such a broad matter that it can be difficult to find specific documentation for iOS Notification Center.

I should mention that I am not an experienced iOS developer, so any help will be very appreciated.

BTW - I can never understand Apple official documentation support anyway. Kind of confusing to find a complete example of a running app.

Thanks for the help. Fabio

UPDATE: It is already 2021, Apple is about to release iOS 15 and we still don't have an API that allow access to the SMS database.

like image 702
Fabio Moggi Avatar asked Jul 24 '15 03:07

Fabio Moggi


1 Answers

in iOS 12 Apple provided an option to read SMS (OTP Password)

If the system can parse a security code from an SMS message, the QuickType bar shows the code for up to three minutes after it has been received. If a security code arrives while the text input view is selected, the system pushes the incoming code to the QuickType bar.

To test the format of your SMS code for different languages, text a message to yourself. If you receive a message with an underlined security code, tap on the code. If a Copy Code option appears, the system has recognized your code.

iOS supports Password AutoFill on UITextField, UITextView, and any custom view that adopts the UITextInput protocol.

You can autocomplete security codes from single-factor SMS login flows

Programmatically

yourTextField.textContentType = .oneTimeCode

Storyboard/XIB

Select UITextField/UITextView in storyboard/XIB click Click on Attribute inspector. Go to text input trait, click to Content type and select one-time code and done.

enter image description here

Before implementation please make sure

  • If you use a custom input view for a security code input text field, iOS cannot display the necessary AutoFill UI.
  • It only works with System keyboard. So avoid using the custom keyboard.
like image 171
Hemant Singh Rathore Avatar answered Oct 05 '22 22:10

Hemant Singh Rathore