【问题标题】:How to send NSLogs when a user presses a button or does something当用户按下按钮或做某事时如何发送 NSLogs
【发布时间】:2010-07-18 14:36:12
【问题描述】:

我正在为某人制作应用程序,并且有一些事情我想监控。我为每个操作都设置了 NSLog,但我希望能够将它们发送到控制台或其他东西。反正有这样做吗?另外我不希望用户知道这件事,我正在监视它,因为我给了用户一个他必须管理的帐户的密码,我想看看他正在做什么以确保他没有违反任何规则。

【问题讨论】:

    标签: objective-c xcode macos x86-64 nslog


    【解决方案1】:

    我在这里不太明白你想要什么; NSLog() 是输出到控制台的标准函数——至少在调试模式下,通常 NSLog() 会从发布代码中删除。 (我知道一个很大的概括,但总体上是正确的)

    用户在您的机器上吗?您是否通过网络连接.. 等等您遗漏了一些问题。

    此外,您为什么要让用户选择做违反规则的事情?我认为这应该是你帖子中最大的一点。用户显然具有打破规则的功能;如何更改该功能而不是监视它们?

    如果我认为我正在使用的软件被“记录”以便开发人员可以看到我在做什么,我会立即开始寻找替代方案。


    编辑:这就是我试图在这个答案的 cmets 中解释的内容。我并没有声称这段代码是可编译的,我只是试图解释这样的解决方案应该如何工作。它可能不是最好的,也不是最快的——但它会完成工作。我个人仍然认为,如果用户没有理由,他就不应该拥有这种功能,并且看到您拥有应用程序的源代码,删除该功能应该是微不足道的 - 即使是暂时的。

    PHP 脚本 - 这会将错误发送给您;

    <?php
    /* Get the specified incident */
    $incident = $_GET['incident'];
    $app = $_GET['app'];
    $email = ''; //Your email address
    
    /* send it to $email, with a subject of $app,
    ** and the "incident as a message" */
    if( mail($email, $app, $incident) ){
        echo "SUCCESS";
    }
    ?>
    

    然后,在 Objective-C 中调用它 - 实现一个快速包装函数以使用 NSString 的 stringWithContentsOfURL 方法的功能。像这样..

    -(BOOL) userRuleBreak:(NSString *)incident{
    
    /* We need to generate a URL of http://xxxxxx/perm.php?incident=???&app=???? */
    
    NSUrl *alert = [NSUrl initWithString:[NSString
                    initWithFormat:@"http://www.xxxxxx.xxx/perm.php?incident=%s&app=%s",
                        incident, @"APPNAME"];
    
    NSString *status = [NSString stringWithContentsOfURL:alert,
                                encoding:NSASCIIStringEncoding];
    
    if( status != nil ){
        return YES; 
    } else {
        return NO;
    }
    
    }
    

    显然,将最后的 if 语句替换为实际检查 NSString 内容的内容。此代码可能编译,也可能无法编译 - 我没有尝试过,但即使是这样,我还是建议您编写自己的解决方案,因为它是在长时间睡眠后很快编写的!

    看,这个应用程序的真正问题不是你在等待用户做他不应该做的事情——而是你让用户能够做他不应该做的事。如果您不希望用户做某事 - 那么不要给他们功能。在用户已经完成某事之后等待电子邮件是一个糟糕的主意——到那时,为时已晚。在它发生之前停止它 - 不要让他们选择这样做。积极主动而不是反动,因为如果用户做了他不应该做的事情;说“但我告诉过你不要那样做!你不被允许”这一切都很好,但你将成为试图挽回他所造成的伤害的人。

    【讨论】:

    • 此人正在为我工​​作,但可以更改密码并发布不应发布的内容。这就是为什么我想监视他的行为。他会在离我不远的电脑上。
    • 那么他需要这个功能吗?如果他可以访问这些,那么我可以看到您的担忧——这是一个巨大的安全问题。我可能错了,但我会创建一个简单的 PHP 脚本来发送电子邮件。在 URL 中传递一个字符串,(script.php?event="password-change" 等)然后让 PHP 脚本由 [NSString setStringWithContentsOfURL] 调用 - 使用 URL 作为参数,然后只需检查 NSString确保一切正常。你甚至可以为它创建一个包装函数。也许有更好的选择,但 IMO 这将完成工作。当然,功能甚至不应该存在。
    • 但它不在我的网站上,它在另一家公司的网站上。
    • 编辑解释解决方案;笔记; PHP 脚本可以在任何人的服务器上——只要它可以访问。
    • 啊,这就是我喜欢了解 Objective-C 网络编程语言的原因。 :) 谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-22
    • 2016-02-13
    相关资源
    最近更新 更多