我正在尝试使用私有API以编程方式发送短信。我的手机没有越狱。
BOOL success = [[CTMessageCenter sharedMessageCenter] sendSMSWithText:@"test 1234..." serviceCenter:nil toAddress:@"0777888888"];
if(success){
NSLog(@"Message SENT");
}else{
NSLog(@"Message not SENT");
}
此代码始终显示“Message not SENT”。任何人都可以帮助我吗?
答案 0 :(得分:2)
我想,你必须用E.123国际表示法写下电话号码。 所以添加加号和国家代码。对于电话号码,美国用+1代替前导0:
[[CTMessageCenter sharedMessageCenter] sendSMSWithText:@"test 1234..." serviceCenter:nil toAddress:@"+1777888888"];
对于电话号码,斯里兰卡使用适当的国家代码+94。
<强>更新强>
我在iOS 7下测试过旧的iOS 5代码...
sendSMSWithText:serviceCenter:toAddress:
返回NO
。
使用新方法sendSMSWithText:serviceCenter:toAddress:withMoreToFollow:
Panagiotis的建议似乎是正确的: - /
更新2
https://stackoverflow.com/a/20425853/2270880给出了正确的答案。
在iOS 7下,该应用需要两个权利com.apple.CommCenter.Messages-send
和
com.apple.coretelephony.Identity.get
。通过文件appname.entitlements
添加其他权利(并在目标的构建设置&gt;所有&gt;代码签名&gt;代码签名权利中设置)为您提供错误
The entitlements specified in your application’s Code Signing Entitlements file do not match those specified in your provisioning profile.
(0xE8008016).
在非越狱设备上。
答案 1 :(得分:1)
我一直试图在iOS 6.1上这样做很长时间,因为我发现自从iOS 6以来最终无法使用此方法。上次我可以使这个代码成功执行是在iOS 5上(有一个花生.app在网络上工作)。
dispatch_queue_t queue = dispatch_queue_create("com.apple.chatkit.clientcomposeserver.xpc_connection_queue", DISPATCH_QUEUE_SERIAL);
xpc_connection_t connection = xpc_connection_create_mach_service("com.apple.chatkit.clientcomposeserver.xpc", queue, 0);
xpc_connection_set_event_handler(connection, ^(xpc_object_t){});
xpc_connection_resume(connection);
dispatch_release(queue);
xpc_object_t dictionary = xpc_dictionary_create(0, 0, 0);
xpc_dictionary_set_int64(dictionary, "message-type", 0);
NSData* recipients = [NSPropertyListSerialization dataWithPropertyList:[NSArray arrayWithObject:@"12212"] format:NSPropertyListBinaryFormat_v1_0 options:0 error:NULL];
xpc_dictionary_set_data(dictionary, "recipients", recipients.bytes, recipients.length);
xpc_dictionary_set_string(dictionary, "markup", "SMS text");
xpc_connection_send_message(connection, dictionary);
xpc_release(dictionary);
虽然没有尝试在非越狱iOS上实现。我希望你能成功!
**编辑
让我纠正自己!您的代码可以使用imagent
可执行文件进行越狱调整。只是无法直接从xCode应用程序执行它。