2011-10-22 5 views
1

Я работаю над реализацией SMS-сообщений в своем приложении. К сожалению, всякий раз, когда я проверяю это, я всегда получаю результат по умолчанию, даже если он отправляет сообщение, и я получаю его на другом конце. Что я делаю неправильно, я сравнивал другие примеры, и мой выглядит одинаково. Работает ли это с iMessage ??? Теперь я всегда получаю его как отправленный, даже если я перехожу в текстовые сообщения, и он скажет, что не удалось.Отправка SMS

// feedback message field with the result of the operation. 
- (void)messageComposeViewController:(MFMessageComposeViewController *)controller 
      didFinishWithResult:(MessageComposeResult)result { 

switch (result) 
{ 

    case MFMailComposeResultCancelled:   

     [self displayStickieUniversalViewControllerTitleString:@"Cancelled" bodyString:@"You cancelled sending the SMS.The event will be saved in the calendar." buttonString:@"Ok, Save Event" bodyTextSize:12.0f buttonTextLines:3]; 

     break; 
    case MFMailComposeResultSent: 

     [self displayStickieUniversalViewControllerTitleString:@"SMS sent" bodyString:@"Your SMS was sent. The event will be saved in the calendar." buttonString:@"Ok, Save Event" bodyTextSize:12.0f buttonTextLines:3]; 

     break; 
    case MFMailComposeResultFailed: 
     [self displayStickieUniversalViewControllerTitleString:@"Failed" bodyString:@"Failed to send SMS. The event will be saved in the calendar." buttonString:@"Ok, Save Event" bodyTextSize:12.0f buttonTextLines:3]; 

     break; 
    default: 
     [self displayStickieUniversalViewControllerTitleString:@"Failed" bodyString:@"Failed to send SMS. The event will be saved in the calendar." buttonString:@"Ok, Save Event" bodyTextSize:12.0f buttonTextLines:3];  
     break; 

} 
[self dismissModalViewControllerAnimated:YES]; 
    } 

/////

if (actionClicked == @"smsEvent") { 
    if ([attendeesArray count]!=0) { 
     NSLog(@"Yes clicked, will send sms confirmation"); 
     Class messageClass = (NSClassFromString(@"MFMessageComposeViewController")); 

     if (messageClass != nil) {   
      if ([messageClass canSendText]) { 
       [self displaySMSComposerSheet]; 
      } 
      else { 

       [self displayStickieUniversalViewControllerTitleString:@"Device not configured to send SMS." bodyString:@"The event will be saved in the calendar." buttonString:@"Save Event" bodyTextSize:14.0f buttonTextLines:2]; 

      } 
     } 
     else { 

     [self displayStickieUniversalViewControllerTitleString:@"Device not configured to send SMS." bodyString:@"The event will be saved in the calendar." buttonString:@"Save Event" bodyTextSize:14.0f buttonTextLines:2]; 
     } 

       } 
} 
+0

Попробуйте проверить, чтобы увидеть, что ваш результат действительно ... 'default' - это всего лишь случай catch-all, который выполняется, если аргумент switch не соответствует ни одному из случаев. –

+1

Вы проверили, действительно ли вы можете отправлять SMS-сообщения? Doc: перед представлением представления композиции сообщения вызовите метод класса canSendText, чтобы убедиться, что устройство пользователя настроено соответствующим образом. Не пытайтесь представить представление композиции, если метод canSendText возвращает NO. Если доставка SMS недоступна, вы можете уведомить пользователя или просто отключить функции SMS в своем приложении. – jbat100

+0

У меня уже есть что-то в приложении, чтобы поймать его, не имея возможности отправить SMS. Как распечатать, каков реальный результат. –

ответ

0

Похоже, что вы используете неправильное перечисление может быть что-то делать с ним мое выглядит следующим образом:

switch (result) 
{ 
    case MessageComposeResultCancelled: 
     break; 
    case MessageComposeResultSent: 
     break; 
    case MessageComposeResultFailed: 
     break; 
    default: 
    { 
     UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"SMS" message:@"Sending Failed - Unknown Error :-(" 
                 delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil]; 
     [alert show]; 
     [alert release]; 
    } 

     break; 
}