iPhone应用程序可以独占控制还是可靠地记录它失去控制的原因

时间:2009-08-02 01:50:53

标签: iphone

我正在尝试确定(潜在)项目所需的某些功能的可行性。我(还)正在寻找一个方法,只是一个可以做的事情。我为任何模糊和无知道歉:前者是由于NDA使得Apple的NDA看起来像GPL,后者是因为我没有iPhone或MAC经验。

我对Objective-c和界面构建器(回到NextStep)和一些PDA开发经验有了深刻的理解,所以即使我的问题很幼稚,我也可能会理解答案。我做了一些浏览,所以我知道一些流行语。

我无法详细介绍实际项目,但我提出了一个蹩脚的比喻。

  • 要求同一房间内的大量用户完成应用中的任务(比如拼图)
  • 他们受到监督,但显示器无法密切关注
  • 在完成之前不允许他们离开申请。
  • 他们无法在任务期间发送/接听电话或留言。
  • 监视器接收任务期间各个步骤的通知
  • 当任务完成或退出应用程序时,将通知监视器
  • 应用程序发送心跳,因此监视器也会知道信号是否丢失
  • 越狱不是一种选择。
  • 该应用程序也适用于iPod Touch。

所以我需要做的事情对我来说似乎很冒险

  • 我可以关闭(或要求用户关闭)手机和短信但仍可以将http发送到我的服务器
  • 我可以阻止应用程序被切换出来(即使警报应用程序触发或电话响铃)。
  • 预防失败,我至少可以检测到这些事件并通知我的服务器。
  • 通知失败,我可以记录事件以供监视器稍后检查。

用户将意识到(并且实际上欢迎)这些限制。这是一个信任问题 - 用户不得寻求帮助或使用帮助应用程序来解决难题,并希望监视器(和其他参赛者)知道他没有。用户可以在开始时单击“确定,我理解并批准”屏幕,但不能与服务器的每次通信相关。

应用程序只与中央服务器(由我的公司运行)通信 - 监视器无法购买服务器软件,服务器的URL也不会是用户(或监视器)可修改的。

嘿!这看起来像是一个参加考试的应用程序。不是我在做什么,但那也很酷!

编辑 -

我更改了标题,并在问题中添加了更多部分,部分基于mmc的答案。应用程序可以在脱机模式下运行,该模式必须执行以下操作:

因此,使用考试类比,用户离线体验将是这样的

  1. 启动应用
  2. App下载测试题,注册开始时间等
  3. 关闭手机(如果应用无法自行完成)
  4. 禁用任何可能会中断我的应用的应用(应用可以执行此操作吗?)
  5. 恢复并参加考试
  6. 表示已完成测试(或完成上一个问题)。
  7. 打开手机(如果应用程序无法启动)并重新启动应用程序(如果需要)。
  8. 应用程序上传测试结果并记录任何中断。
  9. 所以问题就变成了

    • 我确定我至少可以记录任何我无法阻止的中断
    • 我可以知道中断的原因(电话接听,警报启动,用户启动)?
    • 可以阻止用户修改日志
    • 我可以在开始时知道其他应用正在运行吗? (以防止偶尔显示暗示的守护进程。

    我仍然希望以实时上传方式运行,因此我想到了其他一些想法。

    • 如果我可以可靠地检测并记录手机或其他应用程序的使用情况,那可能几乎与预防它一样好。
    • 即使手机处于开启状态,用户也可以阻止手机响铃(例如,呼叫前转+铃声关闭)
    • 我的应用程序可以知道铃声是否已关闭
    • 短信发送的相同问题
    • 如果我无法阻止它,用户可以忽略(静音)呼叫或消息,而不是离开我的应用程序。我的应用会知道吗?

1 个答案:

答案 0 :(得分:3)

听起来你最好不再使用手机,而是将其专用于iPod Touch。

你已经找到了麻烦点。

  • 无法禁用手机功能,同时维护任何类型的网络功能(3G,WiFi或蓝牙)如果您使用飞行模式禁用手机操作,则所有这些功能都将被禁用。
  • 无法阻止“主页”按钮返回“跳板”
  • 您可以通知服务器过早的应用程序中断(您的应用程序委托中有applicationWillTerminate:方法)但不可靠。如果操作时间过长,您的应用程序将被强行终止。
  • 您可以向本地文件系统写入发生过早中断的情况,这样会更加可靠,因为此操作会更快。