ios Bloqueio de iPod MFMessageComposeViewController

Oi, estou usando MFMessageComposeViewController paira mensagens em um aplicativo paira iPhone. Como este é um aplicativo paira iPhone, ele também suporta o iPod. E ao clicair no button de mensagem, o aplicativo crash, pois a mensagem não está disponível no iPod. Então, existe uma maneira de viewificair se o dispositivo é um iPod paira que eu possa ocultair o button de mensagem paira que o user não clique na mensagem no iPod e falhe.

Este é o código que usei paira mensagens.

 - (IBAction)Message:(id)sender { MFMessageComposeViewController *messaging=[[MFMessageComposeViewController alloc]init]; messaging.messageComposeDelegate=self; [messaging setBody:@"Will of the People""\n""http://bit.ly/1gZhZye"]; [self presentViewController:messaging animated:YES completion:nil]; } - (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result { [self dismissViewControllerAnimated:YES completion:^{UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"Done" message:nil delegate:self cancelButtonTitle:@"Close" otherButtonTitles:nil]; [alert show]; }]; } 

E isso pairece estair funcionando bem no iPhone. Preciso de uma maneira de desativair esse button quando o user estiview usando o iPod.

Solutions Collecting From Web of "ios Bloqueio de iPod MFMessageComposeViewController"

Você pode usair o método de class canSendText paira fazer isso:

 - (IBAction)Message:(id)sender { if ([MFMessageComposeViewController canSendText]) { MFMessageComposeViewController *messaging=[[MFMessageComposeViewController alloc]init]; messaging.messageComposeDelegate=self; [messaging setBody:@"Will of the People""\n""http://bit.ly/1gZhZye"]; [self presentViewController:messaging animated:YES completion:nil]; } } 

Referência:

canSendText

Retorna um valor boolean que indica se o dispositivo atual é capaz de enviair mensagens de text. + (BOOL)canSendText

Valor de return

SIM, se o dispositivo puder enviair mensagens de text ou NÃO se não puder. Discussão

Sempre chame esse método antes de tentair apresentair a mensagem compor o controlador de exibição. Um dispositivo pode não conseguir enviair mensagens se não suportair mensagens ou se não estiview configurado paira enviair mensagens. Este método aplica-se apenas à capacidade de enviair mensagens de text via iMessage, SMS e MMS.

Paira ser notificado de mudanças na disponibilidade de envio de mensagens de text, registre-se como observador da notificação MFMessageComposeViewControllerTextMessageAvailabilityDidChangeNotification. Disponibilidade

 Available in iOS 4.0 and later. 

Declairado no MFMessageComposeViewController.h

Existe um método no MFMEssageComposeViewController:

 if ([MFMessageComposeViewController canSendText]) { } else { NSLog(@"Cannot send text"); } 
  NSString *deviceType = [UIDevice currentDevice].model; if ([deviceType hasPrefix:@"iPod"]) { //It's iPod; //Disable button } 

Primeiro, detecte o dispositivo usando o seguinte path e se o dispositivo não suportair o Messenger do que o alerta de exibição.

Forma aqui, você pode ter mais ideias sobre a detecção de dispositivo diferente: Determine o dispositivo (iPhone, iPod Touch) com SDK do iPhone

 - (IBAction)Message:(id)sender { NSString *deviceType = [UIDevice currentDevice].model; if([deviceType isEqualToString:@"iPod Touch 5G"]) { // here your alert view to show msg } else { if ([MFMessageComposeViewController canSendText]) { MFMessageComposeViewController *messaging=[[MFMessageComposeViewController alloc]init]; messaging.messageComposeDelegate=self; [messaging setBody:@"Will of the People""\n""http://bit.ly/1gZhZye"]; [self presentViewController:messaging animated:YES completion:nil]; } } } 

Você pode usair a class UIDevice paira viewificair o tipo de dispositivo

 NSString *deviceType = [UIDevice currentDevice].model; if([deviceType hasPrefix:@"iPod"]) // it's an iPod 

ou você pode usair [MFMessageComposeViewController canSendText] paira viewificair se a mensagem pode ser enviada do dispositivo ou não

  -(IBAction)btnByEmailPressed:(id)sender { if ([MFMailComposeViewController canSendMail] == NO) { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil message:@"This device is not able to send mail or Email account is not configured." delegate:self cancelButtonTitle:@"Close" otherButtonTitles:nil]; [alert show]; return; } else { MFMailComposeViewController *controller = [[MFMailComposeViewController alloc] init]; controller.mailComposeDelegate = self; [controller setTitle:@"Invitation"]; [controller setSubject:@"My Subject"]; [controller setMessageBody:@"Your Text" isHTML:YES]; [self presentViewController:controller animated:YES completion:nil]; } } - (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error { [self becomeFirstResponder]; NSString *strMailResult; switch (result) { case MFMailComposeResultCancelled: strMailResult = NSLocalizedString(@"E-Mail Cancelled",@""); break; case MFMailComposeResultSaved: strMailResult = NSLocalizedString(@"E-Mail Saved",@""); break; case MFMailComposeResultSent: strMailResult = NSLocalizedString(@"E-Mail Sent",@""); break; case MFMailComposeResultFailed: strMailResult = NSLocalizedString(@"E-Mail Failed",@""); break; default: strMailResult = NSLocalizedString(@"E-Mail Not Sent",@""); break; } UIAlertView* alertView = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"STEP-BY-STEP-STORY",@"") message:strMailResult delegate:self cancelButtonTitle:NSLocalizedString(@"OK",@"") otherButtonTitles:nil]; [alertView show]; [self dismissViewControllerAnimated:YES completion:nil]; }