簡體   English   中英

在iPhone上模擬發送的短信

[英]Simulating sent SMS on iPhone

由於在設備上啟動/安裝應用程序時,在iOS 5.1上使用Xcode 4.3調試非常慢,因此我使用了啟動速度更快的模擬器。 (在這里查看關於這個問題的我的問題https://stackoverflow.com/questions/11541288/xcode-4-3-with-ios5-1-pauses-about-10secs-when-debug-starts-simulator-starts-i

所以我要做的就是這樣:

MFMessageComposeViewController *picker = [[MFMessageComposeViewController alloc] init];
picker.messageComposeDelegate = delegate;
NSString *s = @"1234567";
picker.recipients =[NSArray arrayWithObject: s];   
picker.body =smsTxt;
if (simulationMode) {
    MessageComposeResult result = MessageComposeResultSent;            <-----------
    [delegate messageComposeViewController:picker didFinishWithResult: result];
} else
    [delegate presentModalViewController:picker animated:YES];

現在的問題是,在iOS-Simulator上執行時,MFMessageComposeViewController無法實例化,並且始終產生nil。

有沒有一種方法可以在iOS模擬器上創建與MFMessageComposeViewController兼容並且可以通過與MFMessageComposeViewController相同的方法傳遞的另一個對象MyOwnMFMessageComposeViewController?

像這樣:

    MFMessageComposeViewController *picker = [[MFMessageComposeViewController alloc] init];
    picker.messageComposeDelegate = delegate;
    NSString *s = @"1234567";
    picker.recipients =[NSArray arrayWithObject: s];   
    picker.body =smsTxt;
    if (simulationMode) {
        MyOwnMFMessageComposeViewController *mypicker = [[MFMessageComposeViewController alloc] init];
        mypicker.messageComposeDelegate = delegate;
        NSString *s = @"1234567";
        mypicker.recipients =[NSArray arrayWithObject: s];   
        mypicker.body =smsTxt;
        MessageComposeResult result = MessageComposeResultSent;   
        picker = (MFMessageComposeViewController) mypicker;          
        [delegate messageComposeViewController:picker didFinishWithResult: result];
    } else
        [delegate presentModalViewController:picker animated:YES];

您正在尋找的被稱為“模擬對象”,通常用於測試驅動的開發中。 基本上,您要做的是創建MFMessageComposeViewController的子類。 該子類的工作原理與mfmessagecomposeviewcontroller完全相同,不同之處在於,您還創建了實例變量以表明發生了某些事情。

因此,例如,當您的代表調用messageComposeViewController:didFinishWithResult時。 模擬對象可能會存儲結果和該方法已被觸發的標志。 請注意,這實際上不會發送任何內容,而只是告訴您已觸發委托並在實際對象上起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM