[英]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.