http://stackoverflow.com/questions/19175209/sending-sms-using-ctmessagecenter-ios-7
下面的代码在IOS7上面无效,经过一番搜索,解决方案如下。亲测试有效。
I am trying to send sms programmatically using private API. My phone is not jailbroken.
BOOL success = [[CTMessageCenter sharedMessageCenter] sendSMSWithText:@"test 1234..." serviceCenter:nil toAddress:@"0777888888"]; if(success){ NSLog(@"Message SENT"); }else{ NSLog(@"Message not SENT"); }
This code always prints "Message not SENT". Can anyone help me ?
I guess, you have to write the telephone number in E.123 international notation. So add plus sign and country code. For a phone number is USA replace the leading 0 with +1:
[[CTMessageCenter sharedMessageCenter] sendSMSWithText:@"test 1234..." serviceCenter:nil toAddress:@"+1777888888"];
For a phone number is Sri Lanka use the appropriate country code +94.
UPDATE
I've tested old working iOS 5 code under iOS 7... sendSMSWithText:serviceCenter:toAddress:
returns NO
. The same while using the new method sendSMSWithText:serviceCenter:toAddress:withMoreToFollow:
Panagiotis' suggestion seems correct :-/
UPDATE 2
http://stackoverflow.com/a/20425853/2270880 gives the right answer.
Under iOS 7 the app needs two entitlements com.apple.CommCenter.Messages-send
andcom.apple.coretelephony.Identity.get
. Adding additional entitlements via file appname.entitlements
(and set in target's Build Settings > All > Code Signing > Code Signing Entitlements) give you the error
The entitlements specified in your application’s Code Signing Entitlements file do not match those specified in your provisioning profile. (0xE8008016).
on non-jailbroken devices.