0

我一直在四处寻找,无法确定这是否可能。有人请求创建一个具有“30 天后到期的自到期配置文件”的 IPA。这还有可能吗?

当我尝试在会员中心创建配置文件时,它没有给我设置到期时间的选项。

4

2 回答 2

0

If you want the device to stop working after a certain amount of time:

#define BEGIN_DATE @"BEGIN_DATE"

    if(![[NSUserDefaults standardUserDefaults] objectForKey:BEGIN_DATE])
    {
        [[NSUserDefaults standardUserDefaults] setObject:[NSDate date] forKey:BEGIN_DATE];
    };

    if ([[NSDate date] timeIntervalSinceDate:[[NSUserDefaults standardUserDefaults] objectForKey:BEGIN_DATE]] > 2592000)
    {
        *(long*)0 = 0xDEADBEEF;
    }

2592000 is one month in seconds.

于 2013-04-16T14:36:18.363 回答
0

具有“在 30 天内到期的自到期配置文件”的 IPA。

显而易见的解决方案是保存应用程序首次启动的日期,每次应用程序启动(或进入前台等)时检查该日期,如果启动日期超过 30 天,则拒绝执行任何操作当前时间。

这种方法的问题是用户总是可以删除并重新安装应用程序,从而重置时钟。为了解决这个问题,您需要将该设备的首次启动日期保存在用户删除应用程序时不会被删除的地方。这可能意味着将首次发布日期和一些设备标识符发送到您的服务器。它不是万无一失的——用户总是可以关闭你的网络访问,这样你就不能用你的服务器签入——但这可能就足够了。

下一个问题是选择一种识别设备(或用户)的方法。UDID 似乎是一个显而易见的选择,但它已被弃用,并且可能在未来的某个时候消失。UDID 有许多替代品,但大多数仍然违反了禁止使用 UDID 的精神。由于无论如何您都需要使用服务器,您可能需要考虑让用户在服务器上创建一个帐户(当然是通过应用程序),以便开始时间与用户帐户而不是设备相关联。

最后,您应该知道,这类事情会阻止您的应用在 App Store 中获得批准。应用程序不应在演示期到期后停止工作。我知道你说这是一个企业应用程序,但如果是这样的话,你很难理解为什么你仍然需要这种功能。同样,您可以通过使功能依赖于服务器上的用户帐户来解决此问题——在这种情况下,您可以暂停或终止用户帐户以切断访问权限,而不是让应用程序拒绝工作。

如果您希望应用程序在构建应用程序后的一段时间后过期,这是一个更简单的问题。只需将构建日期(或到期日期)存储在应用程序的某些资源中,并定期检查当前日期。

于 2013-04-16T15:13:51.063 回答