问题
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
回答1:
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.
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.
回答2:
The MFi program from Apple allows a chip to be installed on the host
and Bridge API provided pass through of the notifications or messages, call logs etc., to the connected device (This works over Lightning, 30 pin and Bluetooth)
This notification center access can be disabled by toggling of the app in Notification Settings.
As far a to do with in an App is not available through any of the published APIs
回答3:
You can read data from notification tra, Apple Notification manager library is open, we can implement it. just read every notification for incoming sms and if match found then fire your functions
回答4:
not possible with official SDK
you can only check is status is changed. so basically if you receive a notification
来源:https://stackoverflow.com/questions/31601552/how-to-programmatically-read-incoming-text-messages-on-ios