1

Having spent a couple of months on the internet and stackoverflow, I cannot find a way to send an SMS from an iPhone with iOS 6 (6.1 to be precise) when an event occurs or with a tweak. I've read that apple has changed the way SMS messages are being processed since iOS 5 and to be specific

The main difficulty comes from the fact that Apple introduces an IPC mechanism in iOS 6 that resembles the "Share" functionality in Android. Unlike before where sending an SMS is a direct call in SpringBoard process, now Apple uses what is internally called as RemoteViewController's to implement such functionality. RemoteViewController's run in separate processes and expose NO interface as in iOS 4/5 for sending SMS's so it will be useless to just hook SpringBoard process. This design is applied to SMS, e-mail, Twitter, Facebook, Sina Weibo, etc. sharing interface.

Quoted from https://github.com/mrzzheng/GVExtensions/wiki/GV-Extensions-on-iOS-6.

Please do not post answers having to do with MFMessageComposeViewController it is not what I am looking for! What I am looking for, is the private headers that can be used to perform the task (have read somewhere that it may be able to accomplish it using the ChatKit and the IMCore frameworks).

Lastly, before saying that it cannot be done, take a look at the iRealSMS and HandcentSMS apps available for free on Cydia, doing exactly what I am talking about.

Thank you in advance!

Panagiotis
  • 309
  • 2
  • 13
  • 2
    Have you seen this: http://stackoverflow.com/a/16451830/1920855 –  Aug 22 '13 at 14:40
  • Unfortunately I have but I cannot seem to figure out what to do with it and since it wasn't accepted as an answer I moved on... – Panagiotis Aug 22 '13 at 14:44
  • 2
    Take a look at this: http://stackoverflow.com/questions/15872553/send-programmatically-sms-on-jailbreak-device – Victor Ronin Aug 22 '13 at 16:23
  • Look at my answer. That code is tested many times and actually is used by iOS - I disassembled it from iOS frameworks. Here is a few tips. First, `recipients` variable. It holds serialized property list with array of phone numbers to which you want to send your SMS - `12212` is just an example of phone number. Second, instead of `SMS text` you should put actual SMS text. That's it. Unfortunately, I couldn't find a way to check whether SMS was sent successfully. – creker Aug 24 '13 at 17:01
  • @creker ok thnx, but what should I do with that code? Use it in xCode or through Theos somewhere..? Thank you again! – Panagiotis Aug 25 '13 at 10:14
  • First you need to declare several functions from XPC API. This API is public in OS X so you can find all function declarations you need in OS X XPC header. On iOS XPC is not public so you have to declare functions yourself. Then just use my code. It's complete working example. If it works please up vote my answer here http://stackoverflow.com/questions/15872553/send-programmatically-sms-on-jailbreak-device to show that it was helpful. – creker Aug 25 '13 at 17:50
  • I will try to figure it out in the next 24h. I will of course up vote if I manage to make it! My email address is panagiotious@gmail.com, if you have any working example, I would be more than thankful if you could help me out! It is all about a research project I am trying to complete, nothing commercial! Thank you in advance! – Panagiotis Aug 25 '13 at 18:09
  • @creker it worked!! But how do I change the entitlement so that I can use it in an app? I only tested it through a tweak, which doesn't meet my needs! – Panagiotis Aug 26 '13 at 13:03
  • @Panagiotis What do you mean by "change"? Just sign it with entitlements. I'm using this code in a daemon signed with required entitlements. – creker Aug 28 '13 at 18:38
  • @creker Sorry but this sounds new to me! How do you create a daemon? I am using xCode with iOSOpenDev and I cannot `ldid` my application product with the entitlements XML containing the `com.apple.messages.composeclient`. I am trying to build a dylib at the moment with this code to make a link to my app at runtime, but having trouble with that as well (http://stackoverflow.com/questions/18484989/ios-6-1-dynamic-library-build-and-link if you could help!). – Panagiotis Aug 28 '13 at 20:05
  • 2
    @Panagiotis never used `ldid`, always had troubles with it. I'm using xcode to build a daemon manually without any external tools. Then I'm signing it with `codesign` tool that gets installed with xcode. Never had a problem with this tool. It requires you to create certificate for code signing in `keychain access` like this http://www.ifans.com/forums/threads/how-to-fake-code-sign-your-apps-for-cydia-submission-ipad-apps.292945/ – creker Aug 28 '13 at 20:22

0 Answers0