我正在为某人制作应用程序,并且有些事情我想监控。我为每个操作都设置了 NSLog,但我希望能够将它们发送到控制台或其他东西。反正有这样做吗?此外,我不希望用户知道这件事,我正在监视这一点,因为我为用户提供了他必须管理的帐户的密码,并且我想看看他正在做什么以确保他没有违反任何规则。
1 回答
我不太明白你想要什么;NSLog() 是输出到控制台的标准函数——至少在调试模式下,通常 NSLog() 会从发布代码中删除。(我知道一个很大的概括,但通常是正确的)
用户在您的机器上吗?您是否通过网络连接.. 等等 您遗漏了一些问题。
此外,您为什么要让用户选择做违反规则的事情?我认为这应该是你帖子中最大的一点。用户显然具有打破规则的功能;如何更改该功能而不是监视它们?
如果我认为我正在使用的软件被“记录”以便开发人员可以看到我在做什么,我会立即开始寻找替代方案。
编辑:这就是我试图在这个答案的评论中解释的内容。我并没有声称这段代码是可编译的,我只是试图解释这样的解决方案应该如何工作。它可能不是最好的,也不是最快的——但它会完成工作。我个人仍然认为,如果用户没有理由,他就不应该拥有这种功能,并且看到您拥有应用程序的源代码,删除该功能应该是微不足道的——即使是暂时的。
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 内容的内容。这段代码可能编译,也可能不编译——我没有尝试过,但即使这样做,我还是建议您编写自己的解决方案,因为这是在长时间没有睡觉的情况下很快编写的!
看,这个应用程序的真正问题不是你在等待用户做他不应该做的事情——而是你给了那个用户做他不应该做的事情的能力。如果您不希望用户做某事 - 那么不要给他们功能。在用户已经完成某事之后等待电子邮件是一个糟糕的主意——到那时,为时已晚。在它发生之前停止它 - 不要让他们选择这样做。积极主动而不是反动,因为如果用户做了他不应该做的事情;一切都很好,说“但我告诉过你不要那样做!你不被允许” - 但你将成为试图消除他所造成的伤害的人。