2013-09-23 3 views
4

есть проблема, когда я пытаюсь отправить список больших получателей (например, более 40) с помощью MFMessageComposeViewController. В iOS7 он покажет пустой белый экран в течение 20 или более секунд, прежде чем отображать представление SMS. Это не происходит для iOS5 и iOS6.MFMessageComposeViewController показывает пустой белый экран в iOS7

Ниже существующий код, который я использую,

NSArray * recipients; 

for (NSIndexPath * index in selectedRows) 
{ 
    NSDictionary *dictionary = [data objectAtIndex:index.row]; 
    NSString *phoneNum = [dictionary objectForKey:@"contactNum"]; 
    recipients = [NSArray arrayWithObjects:phoneNum, nil]]; 
} 

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

if([MFMessageComposeViewController canSendText]) 
{ 
    controller.body = bodyOfMessage; 
    controller.recipients = recipients; 
    controller.messageComposeDelegate = self ; 
    controller.wantsFullScreenLayout = NO; 
    [(id)_delegate presentModalViewController:controller animated:YES]; 
    [[UIApplication sharedApplication] setStatusBarHidden:YES]; 
} 

Ниже приведены исходящее сообщение, которое я получил, когда я пытаюсь отправить много.

timed out waiting for fence barrier from com.apple.mobilesms.compose 
Received memory warning. 
Received memory warning. 
Received memory warning. 
Received memory warning. 
Received memory warning. 
Received memory warning. 
Received memory warning. 
Received memory warning. 
Received memory warning. 
+1

У меня такая же проблема. Я открыл отчет об ошибке в bugreport.apple.com с id # 14994563 через два дня Apple Engineering спросит меня о консольном журнале, я привязал его, но пока ничего не произошло. Я написал много нитей на форуме разработчиков Apple, не найдя решения ... сегодня я написал тим-повару. – mi0772

+0

Это странная ошибка. Из 4 устройств iPhone5, которые я тестировал, 2 столкнулись с этой проблемой, в то время как остальные 2 отображают представление SMS немедленно. Я озадачен. – LDWP

+1

У меня такая же проблема с моим отправленным приложением. Кажется ОК ниже 30 или около того контактов, но получает более длительную задержку выше этого. 86 не вернулся вообще! Лучше всего предположить, что это связано с тем, как контакты теперь окрашены в соответствии с методом, который будет использоваться для их отправки. На iPad вы теперь получаете кучу прядильщиков, появляющихся против каждого контакта, так как выясняется, известны ли они iMessage. Я не уверен, что это было последнее дополнение к iOS7, но я не заметил этого здесь в бета-версиях. –

ответ

-2

Проблема была решена в iOS 7.0.3.

+0

Только что приурочен к ожиданию барьера ограждения от com.apple.mobilesms.compose появится на 7.0.4 –

+6

Также получите это на 8.1.1. Яблоко! – simonthumper

+0

Проблема также в версии 8.0.2 –

2

я была такая же проблема, то понял

controller.recipients = // всегда должен быть массив строк.

Убедитесь, что номера телефонов, отправленные контроллеру, являются NSString.

4

У меня была аналогичная проблема, когда я получил сообщение в консоли "

истекло время ожидания забор барьера от com.apple.mobilesms.compose

Проблема была, что я пытался в моем приложении, чтобы добавить номер в строке, но из-за запрос локализации, я поставил его в форме: NSArray *recipents = @[NSLocalizedString(@"numberForRegistrationViaSms", @"")];

и

[messageController setRecipients:@[recipents]]; 

Это по какой-то причине не работает, но, когда я просто ставлю [messageController setRecipients:@[@"123456789"]];, композитор SMS появляется без проблем.

1

Я думаю, что, возможно, решить эту проблему:

// должен инициировать новый объект NSString

 
NSString *phoneStr = [NSString stringWithFormat:@"%@",... ];              

MFMessageComposeViewController *aCtrl = [[MFMessageComposeViewController alloc] init]; 
aCtrl.recipients      = @[phoneStr]; 
... 

Then OK. 

1

У меня была такая же проблема.

  • истекло время ожидания забор барьера от com.apple.mobilesms.compose

  • Сообщение Отмененные

Вместо этого:

NSString *phoneNumber = @"888888888"; 
    [picker setRecipients:@[phoneNumber]]; 

T ry this:

NSString *phoneNumber = person.phoneNumber; 
    [picker setRecipients:@[[NSString stringWithFormat:@"%@", phoneNumber]]]; 

Это сработало для меня.

Смежные вопросы