iOS-重定向nslog输出到文件,邮件反馈

以下是在真机测试 未线连mac时 查看程序运行日志的简单方法


1 复制以下代码到didfinishlaunch里面去粘贴 

UIDevice *device = [UIDevicecurrentDevice];

if ([[device model]isEqualToString:@"iPhone"] || [[devicemodel] isEqualToString:@"iPad"]) {

NSString *documentpath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES)lastObject];

 NSString *fileName = [NSStringstringWithFormat:@"log.txt"];

    NSString *logFilePath = [documentpathstringByAppendingPathComponent:fileName];

    NSFileManager *fileManager = [NSFileManagerdefaultManager];

    [fileManager removeItemAtPath:logFilePath error:nil];//删除之前的log.txt文件

    freopen([logFilePath cStringUsingEncoding:NSASCIIStringEncoding],"a+", stderr);

}
在这段代码之前的nslog会出现在控制台  之后的会 出现在document下的log.txt文件中去

2导入messageui.framework 系统框架 

3#import <MessageUI/MessageUI.h>

4在控制器中添加一个button 在button的事件方法中粘贴如下代码 将以下粘贴到控制器中 
5在 被测真机 的系统邮件app中登录邮箱  
6点击button 第三步的邮箱就会往代码中你要发往的邮箱中发送log.txt这个程序运行日志文件了

//- (IBAction)mail:(id)sender {

    BOOL canSendMail = [MFMailComposeViewControllercanSendMail];

    if (canSendMail) {

        MFMailComposeViewController *mailVc = [[MFMailComposeViewControlleralloc]init];

        [mailVc setToRecipients:@[在这里写你要发给谁的邮箱 例如 @"1204229880@qq.com"]];

        NSString *documentpath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES)lastObject];

        NSString *fileName = [NSStringstringWithFormat:@"log.txt"];//当前日期做文件名

        NSString *logFilePath = [documentpathstringByAppendingPathComponent:fileName];

        NSData *data = [NSDatadataWithContentsOfFile:logFilePath];

        [mailVc addAttachmentData:datamimeType:@""fileName:@"log.txt"];

        mailVc.mailComposeDelegate = self;

        [self presentViewController:mailVcanimated:YEScompletion:nil];

    } else {

        UIAlertView *alert = [[UIAlertViewalloc] initWithTitle:@"提示"message:@"您的设备不支持邮件功能"delegate:selfcancelButtonTitle:@"确定"otherButtonTitles:nil,nil];

        [alert show];

    }

//}

7 以下就是回调方法告知发送的各种状态 可有可无 有就准守协议

//

- (void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error{

    //    MFMailComposeResultCancelled,  取消发送

    //    MFMailComposeResultSaved,      保存

    //    MFMailComposeResultSent,       发送

    //    MFMailComposeResultFailed      发送失败

    

    switch (result) {

        case MFMailComposeResultCancelled:

            NSLog(@"取消发送");

            break;

        case MFMailComposeResultSaved:

            NSLog(@"保存");

            break;

        case MFMailComposeResultSent:

            NSLog(@"发送成功");

            break;

        case MFMailComposeResultFailed:

            NSLog(@"失败");

            break;

            

        default:

            break;

    }

    

    [self dismissViewControllerAnimated:YEScompletion:nil];

    

}

}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值