2012-03-19 76 views
1

我正在編寫一個應用程序,它可以從運營商測試不同的SMSC(短消息服務中心)。因此我需要更改iPhone用於發送短信的SMSC。有沒有辦法做到這一點?iOS以編程方式更改SMSC

Android提供了一個以SMSC作爲參數的sendMessage方法,在iOS中有沒有相當於?我不在乎它是否使用私有API調用,因爲我不會釋放我的應用程序(僅用於內部測試目的)。任何幫助表示感謝,謝謝。

+0

對於替代它可能是用於改變SMSC iPhone使用的,而不是直接發送通過不同的SMSC的代碼。 – Nexus2k 2012-03-23 16:19:56

+0

另一種選擇是在後臺調用** 5005 * 7672 * SMSCNUMBER#,在私有API中是否有這樣的事情? – Nexus2k 2012-03-26 14:15:14

回答

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]; 
+0

原始海報提到他正在使用該應用程序供個人使用,並且不打算提交給應用程序商店。這就是說,你的回答在回答他的問題上並不是很有建設性。 – brandonbocklund 2012-03-19 22:00:47

+0

@brandonbocklund你甚至讀過答案嗎?這是一種非批准的方式。我的問題是越獄的方式,而這正是他所要求的。 – fbernardo 2012-03-20 00:27:03

+0

@fbernardo感謝您的快速回復。只需要被開發人員程序接受,以便我可以在手機上進行測試。將回報。 – Nexus2k 2012-03-20 10:42:16

2

您需要使用AT命令到SIM卡上更新SMSC。

在iOS上,您可以使用Private Framework SKTelephonyController。

AT命令獲取SIM卡上的當前SMSC: AT + CSCA?

寫入SIM卡: AT + CSCA =「1xxxxxxxxxx」,145

+0

Nexus2k表示私有框架API不起作用,所以我只是提供了另一種解決方案。 – mikewen 2013-06-17 19:34:52