我正在编写一个可以测试运营商的不同SMSC(短消息服务中心)的应用程序。因此,我需要更改iPhone用于发送短信的SMSC。有没有办法做到这一点?
Android提供了一个以SMSC为参数的sendMessage方法,在iOS中是否有相同的功能?我不在乎它是否使用私有API调用,因为我无论如何都不会发布我的应用程序(仅用于内部测试目的)。任何帮助表示感谢,谢谢。
答案 0 :(得分:7)
此解决方案适用于非越狱手机,但不会进入应用程序商店。 它使用私有API,它与Android的sendMessage的描述非常相似。
您必须将项目链接到CoreTelephony框架(现在公开),并创建下面描述的标题。还包含了例子。
<强> CTMessageCenter.h:强>
#import <Foundation/Foundation.h>
@interface CTMessageCenter : NSObject
{
}
+ (id)sharedMessageCenter;
- (id)init;
- (id)sendSMS:(id)fp8;
- (id)sendMMSFromData:(id)fp8 messageId:(unsigned int)fp12;
- (id)sendMMS:(id)fp8;
- (id)send:(id)fp8;
- (id)incomingMessageWithId:(unsigned int)fp8 telephonyCenter:(struct __CTTelephonyCenter *)fp12 isDeferred:(BOOL)fp16;
- (int)incomingMessageCount;
- (id)allIncomingMessages;
- (void)acknowledgeIncomingMessageWithId:(unsigned int)fp8;
- (void)acknowledgeOutgoingMessageWithId:(unsigned int)fp8;
- (id)incomingMessageWithId:(unsigned int)fp8;
- (id)deferredMessageWithId:(unsigned int)fp8;
- (id)statusOfOutgoingMessages;
- (id)encodeMessage:(id)fp8;
- (id)decodeMessage:(id)fp8;
- (BOOL)isMmsEnabled;
- (BOOL)isMmsConfigured;
- (BOOL)sendSMSWithText:(id)fp8 serviceCenter:(id)fp12 toAddress:(id)fp16;
@end
示例:强>
#import "CTMessageCenter.h"
BOOL success = [[CTMessageCenter sharedMessageCenter] sendSMSWithText:@"test" serviceCenter:serviceCenterNumberAsString toAddress:numberAsString];
答案 1 :(得分:2)
您需要使用AT命令更新SIM卡上的SMSC。
在iOS上,您可以使用私有框架SKTelephonyController。
AT Command获取SIM卡上的当前SMSC: AT + CSCA?
写入SIM卡: AT + CSCA =“1xxxxxxxxxx”,145