/iPhone/SMSComposer/SMSComposer.m

https://github.com/msoftware/phonegap-plugins · Objective C · 83 lines · 55 code · 20 blank · 8 comment · 9 complexity · 1667d8d5daaaf596da9405c7de28345f MD5 · raw file

  1. //
  2. // SMSComposer.m
  3. // SMS Composer plugin for PhoneGap
  4. //
  5. // Created by Grant Sanders on 12/25/2010.
  6. //
  7. #import "SMSComposer.h"
  8. @implementation SMSComposer
  9. - (void)showSMSComposer:(NSArray*)arguments withDict:(NSDictionary*)options
  10. {
  11. Class messageClass = (NSClassFromString(@"MFMessageComposeViewController"));
  12. if (messageClass != nil) {
  13. if (![messageClass canSendText]) {
  14. UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Notice" message:@"SMS Text not available."
  15. delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil];
  16. [alert show];
  17. [alert release];
  18. return;
  19. }
  20. } else {
  21. UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Notice" message:@"SMS Text not available."
  22. delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil];
  23. [alert show];
  24. [alert release];
  25. return;
  26. }
  27. NSString* body = [options valueForKey:@"body"];
  28. NSString* toRecipientsString = [options valueForKey:@"toRecipients"];
  29. MFMessageComposeViewController *picker = [[MFMessageComposeViewController alloc] init];
  30. picker.messageComposeDelegate = self;
  31. if(body != nil)
  32. picker.body = [options valueForKey:@"body"];
  33. if(toRecipientsString != nil)
  34. [picker setRecipients:[ toRecipientsString componentsSeparatedByString:@","]];
  35. [[ super appViewController ] presentModalViewController:picker animated:YES];
  36. [picker release];
  37. }
  38. // Dismisses the composition interface when users tap Cancel or Send. Proceeds to update the message field with the result of the operation.
  39. - (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result
  40. {
  41. // Notifies users about errors associated with the interface
  42. int webviewResult = 0;
  43. switch (result)
  44. {
  45. case MessageComposeResultCancelled:
  46. webviewResult = 0;
  47. break;
  48. case MessageComposeResultSent:
  49. webviewResult = 1;
  50. break;
  51. case MessageComposeResultFailed:
  52. webviewResult = 2;
  53. break;
  54. default:
  55. webviewResult = 3;
  56. break;
  57. }
  58. [[ super appViewController ] dismissModalViewControllerAnimated:YES];
  59. NSString* jsString = [[NSString alloc] initWithFormat:@"window.plugins.smsComposer._didFinishWithResult(%d);",webviewResult];
  60. [self writeJavascript:jsString];
  61. [jsString release];
  62. }
  63. @end