ios如何利用系统邮件发送反馈 代码

    主要是使用MFMailComposeViewController  这个类,包装下就ok.   

  1.  

将ios的appDelegate类  的laungh函数中,将相应的代码修改为:

[cpp] view plaincopy

  1. // Set RootViewController to window  
  2. if ( [[UIDevice currentDevice].systemVersion floatValue] < 6.0)  
  3. {  
  4.     // warning: addSubView doesn't work on iOS6  
  5.      [window setRootViewController:viewController];  
  6.     [window addSubview: viewController.view];  
  7. }  
  8. else  
  9. {  
  10.     // use this method on ios6  
  11.     [window setRootViewController:viewController];  
  12. }  

    主要目的是 当SDK< 6.0的时候,也设置  

    [window  setRootViewController:viewController];

   以免后面调用 window.rootViewController的时候crash.


2.   头文件内容如下:

   

@interface EmailIOS : UIViewController <MFMailComposeViewControllerDelegate>
{
    MFMailComposeViewController* mailPicker;
    UIWindow * window;
}

- (void)SendMail;

@end


3. *.mm文件实现如下:

   

@implementation EmailIOS

- (void)SendMail
{
    if (![MFMailComposeViewController canSendMail])
    {
        UIAlertView *alert = [[UIAlertView alloc]
							  initWithTitle:nil
							  message:[NSString stringWithUTF8String:LanguageManager::sharedLanguageManager()->getLocalizedString("Please configure your Email first").c_str()]
							  delegate:nil
							  cancelButtonTitle:@"OK"
							  otherButtonTitles:nil];
        [alert show];
        [alert release];
		
        return ;
    }
	
    if(mailPicker != nil)
    {
        [mailPicker release];
    }
    
    mailPicker = [[MFMailComposeViewController alloc] init];
    mailPicker.mailComposeDelegate = self;
    mailPicker.navigationBar.tintColor=[UIColor colorWithRed:(11.0/255.0) green:(81.0/255.0) blue:(112.0/255.0) alpha:1];
    //    mailPicker.navigationBar.tintColor=[UIColor colorWithRed:(90.0/255.0) green:(182.0/255.0) blue:(45.0/255.0) alpha:1];
    
	NSString* strSubject = [NSString stringWithFormat:@"XXX APP反馈"];
    [mailPicker setSubject:strSubject];
	
    // Set up recipients
    NSArray *toRecipients = [NSArray arrayWithObject:@"XXX@fuckU.com"];
    [mailPicker setToRecipients:toRecipients];
    
    NSString * device = [[UIDevice currentDevice] model];
    NSString * ios = [[UIDevice currentDevice] systemVersion];
    
     NSString *body = [NSString stringWithFormat:@"请留下您的宝贵建议和意见:\n\n\n以下信息有助于我们确认您的问题,建议保留。\nApp id:\nApp Version: %s\nDevice: %@\nOS Version: %@\n", GAME_VERSION, device, ios];
    [mailPicker setMessageBody:body isHTML:NO];
    
    [self presentModalViewController:mailPicker animated:YES];
    
     mailPicker.view.frame = [UIScreen mainScreen].bounds;

    window = [[UIWindow alloc] initWithFrame: [[UIScreen mainScreen] bounds]];
    
    if ( [[UIDevice currentDevice].systemVersion floatValue] < 6.0)
    {
        // warning: addSubView doesn't work on iOS6
        [window addSubview: mailPicker.view];
    }
    else
    {
        // use this method on ios6
        window.rootViewController = self;
        [window setRootViewController:self];
    }
    
     [window makeKeyAndVisible];

 
    
//    cocos2d::CCDirector::sharedDirector()->
//
//	[[[CCDirector sharedDirector] view] insertSubview:mailPicker.view atIndex:30];
}

- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error
{   
	NSString * message;
	
	// Notifies users about errors associated with the interface
	switch (result)
	{
		case MFMailComposeResultSent:
		{
			message = @"Successfully sent!";
			
			UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Email"
															message:message
														   delegate:self
												  cancelButtonTitle:@"OK"
												  otherButtonTitles:nil];
			[alert show];
			[alert release];
		}
			break;
		case MFMailComposeResultFailed:
		{
			//message = @"Result: failed";
			UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Email"
															message:[NSString stringWithFormat:@"Error! Please try again later. (error msg = %@)", @"Failed to send email"]
														   delegate:self
												  cancelButtonTitle:@"OK"
												  otherButtonTitles:nil];
			[alert show];
			[alert release];
		}
			break;
		default:
		{
			//message = @"Result: not sent";
			//DLog(@"%@",message);
		}
			break;
	}
	
    
    //add 的时候是分版本的,所以这里也是分版本,否则crash
    if ( [[UIDevice currentDevice].systemVersion floatValue] < 6.0)
    {
         [mailPicker.view removeFromSuperview];
    }
    else
    {
        [mailPicker dismissModalViewControllerAnimated:YES];
    }

    [mailPicker release];
    mailPicker = nil;
    
    //这个地方不需要remove  self 

    

    
    [window removeFromSuperview];
    [window release];
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    return UIInterfaceOrientationIsLandscape( interfaceOrientation );
}

// For ios6, use supportedInterfaceOrientations & shouldAutorotate instead
- (NSUInteger) supportedInterfaceOrientations{
#ifdef __IPHONE_6_0
    return UIInterfaceOrientationMaskLandscape;
#endif
    return 0;
}

- (BOOL) shouldAutorotate {
    return YES;
}

@end

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值