2013-09-11 3 views
0

Я получаю следующие ошибки (from the EmailComposer phonegap plugin), когда я пытаюсь построить из Xcode. Я не знаком с Obj-C, поэтому я не уверен, что это результат ошибки, которую я сделал, или если это связано с тем, что плагин устарел. Я использую последнюю версию Phonegap (3?) & Xcode 4.6.3.Phonegap EmailComposer плагин ошибка

  • EmailComposer.m: 132: 6: 'выпуск' недоступен: не доступен в режиме автоматического подсчета ссылок
  • EmailComposer.m: 132: 6: АРК запрещает явное сообщение отправить из 'выпуска'
  • EmailComposer.m: 175: 21: Приведение типа указателя Objective-C «NSString *» к типу C-типа «CFStringRef» (aka 'const struct __CFString *') требует мостового литья
  • EmailComposer.m: 179: 11: Приведение типа указателя C 'CFStringRef' (aka 'const struct __CFString *') к типу указателя Objective-C 'NSString *' требует мостового литья
+0

Я предполагаю, что плагин еще не был изменен для поддержки PhoneGap 3.0. Его ближайшая поддержка будет, я думаю, PhoneGap 2.6.0. –

ответ

0

Попробуйте, как это ..

Я использовал этот следующий файл плагина с Cordova-2.7.0 и Xcode 4.6. Он отлично работает для меня.

Возьмите плагин файлы имя как EmailComposer и скопируйте приведенный ниже код в файл EmailComposer.h

#import <MessageUI/MFMailComposeViewController.h> 
#import <Cordova/CDVPlugin.h> 
@interface EmailComposer : CDVPlugin <MFMailComposeViewControllerDelegate> {  
} 

- (void) showEmailComposer:(NSMutableArray*)arguments withDict:(NSMutableDictionary*)options; 

- (void) openApplication:(NSMutableArray*)arguments withDict:(NSMutableDictionary*)options; 

@end 

И скопируйте приведенный ниже код в файл EmailComposer.m

#import "EmailComposer.h" 
@implementation EmailComposer 

- (void) openApplication:(NSMutableArray*)arguments withDict:(NSMutableDictionary*)options{ 
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@",[arguments objectAtIndex:1]]]]; 
} 

- (void) showEmailComposer:(NSMutableArray*)arguments withDict:(NSMutableDictionary*)options 
{ 
// NSUInteger argc = [arguments count]; 

NSString* toRecipientsString = [arguments objectAtIndex:1];//[options valueForKey:@"toRecipienthellos"]; 
NSString* ccRecipientsString = [options valueForKey:@"ccRecipients"]; 
NSString* bccRecipientsString = [options valueForKey:@"bccRecipients"]; 
NSString* subject = [options valueForKey:@"subject"]; 
NSString* body = [options valueForKey:@"body"]; 
NSString* isHTML = [options valueForKey:@"bIsHTML"]; 

MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init]; 
picker.mailComposeDelegate = self; 

// Set subject 
if(subject != nil) 
    [picker setSubject:subject]; 
// set body 
if(body != nil) 
{ 
    if(isHTML != nil && [isHTML boolValue]) 
    { 
     [picker setMessageBody:body isHTML:YES]; 
    } 
    else 
    { 
     [picker setMessageBody:body isHTML:NO]; 
    } 
} 

// Set recipients 
if(toRecipientsString != nil) 
{ 
    [picker setToRecipients:[ toRecipientsString componentsSeparatedByString:@","]]; 
} 
if(ccRecipientsString != nil) 
{ 
    [picker setCcRecipients:[ ccRecipientsString componentsSeparatedByString:@","]]; 
} 
if(bccRecipientsString != nil) 
{ 
    [picker setBccRecipients:[ bccRecipientsString componentsSeparatedByString:@","]]; 
} 

if (picker != nil) {  
    [self.viewController presentModalViewController:picker animated:YES]; 
} 
[picker release]; 
} 

// Dismisses the email composition interface when users tap Cancel or Send. Proceeds to update the message field with the result of the operation. 

- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error 
{ 
// Notifies users about errors associated with the interface 
int webviewResult = 0; 

switch (result) 
{ 
    case MFMailComposeResultCancelled: 
     webviewResult = 0; 
     break; 
    case MFMailComposeResultSaved: 
     webviewResult = 1; 
     break; 
    case MFMailComposeResultSent: 
     webviewResult =2; 
     break; 
    case MFMailComposeResultFailed: 
     webviewResult = 3; 
     break; 
    default: 
     webviewResult = 4; 
     break; 
} 

[self.viewController dismissModalViewControllerAnimated:YES]; 

NSString* jsString = [[NSString alloc] initWithFormat:@"window.plugins.emailComposer._didFinishWithResult(%d);",webviewResult]; 
[self writeJavascript:jsString]; 
[jsString release]; 

} 

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