簡體   English   中英

使用MFMessageComposeViewController發送消息失敗

[英]sending message using MFMessageComposeViewController failed

我面臨向多個聯系人發送消息的一個問題:

301個上層聯系人:消息應用未打開,如果我們多次單擊邀請,則iMessage將打開,但加載消息需要更多時間(2分鍾)

351位聯系人:消息已打開,帶有黑色新消息屏幕,然后返回到我們的應用程序,而未打開消息屏幕。

這是我的代碼:contacts是電話號碼的數組

NSMutableArray *contacts = [NSMutableArray array];

for (User *user in users) {
    if (user.phone.length) {
        NSString *strphonenumber = [NSString stringWithFormat:@"%@",user.phone];
        [contacts addObject:strphonenumber];
    }
} 

MFMessageComposeViewController  *messanger = [[MFMessageComposeViewController alloc]init];
    messanger.messageComposeDelegate = self;
    messanger.recipients = contacts;
    messanger.body = [NSString stringWithFormat:@“body”;

    [self presentViewController:messanger animated:YES completion:NULL];

我收到此錯誤:

<CKSMSComposeRemoteViewController: 0x12802f810> timed out waiting for fence barrier from com.apple.mobilesms.compose

嘗試這個...

NSString *strContacts = [NSString stringWithFormat:@"%@",add multipal contacts];

MFMessageComposeViewController *message = [[MFMessageComposeViewController new];
message.recipients  = @[strContacts];

然后我想到了同樣的問題

messanger.recipients = //應始終為字符串數組。

確保您發送給messanger.recipients的電話號碼是NSString

這對我有用:

將委托設置為接口:

@interface ViewController <MFMessageComposeViewControllerDelegate>{}

檢查設備是否能夠發送消息

if([MFMessageComposeViewController canSendText] ){
  //device is possible to send messages
}else{
  //device can't send messages
}

准備消息:

MFMessageComposeViewController* comp = [[MFMessageComposeViewController alloc] init];

 //set properties
 comp.body = @"body";
 comp.recipients = [NSArray arrayWithObjects:phone1, phone2, nil];
 comp.messageComposeDelegate = self;

打開對話框:

[self presentViewController:comp animated:YES completion:nil];

確定結果

- (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result{
    //test result
    switch (result) {
        case MessageComposeResultCancelled:
            [self makeAlert:@"Result canceled"];
            break;
        //message was sent
        case MessageComposeResultSent:
            [self makeAlert:@"Result sent"];
            break;
        case MessageComposeResultFailed:
            [self makeAlert:@"Result Failed"];
            break;
        default:
            break;
    }

    //dismiss view
    [self dismissViewControllerAnimated:YES completion:nil];
}

只需使用此方法:

- (IBAction)sendSMS:(id)sender {

   MFMessageComposeViewController *controller =  
   [[MFMessageComposeViewController alloc] init] autorelease];
   if([MFMessageComposeViewController canSendText]){
        controller.body = @"Hello";
        controller.recipients = [NSArray arrayWithObjects:@"12345678",@"87654321", nil];
        controller.messageComposeDelegate = self;
        [self presentViewController:controller animated:YES completion:nil];
    }
}

回調方法:

- (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result{
     switch (result) {
       case MessageComposeResultCancelled:
             NSLog(@"Cancelled");
             break;
        case MessageComposeResultFailed:
             NSLog(@"Error occured");
             break;
        case MessageComposeResultSent:
             break;
        default:
             break;
     }
    [self dismissViewControllerAnimated:YES completion:nil];
}

暫無
暫無

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

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