2013-04-16 61 views
0

我一直在四处搜寻,无法确定这是否可能。有人要求创建一个“自动过期配置文件在30天内到期”的IPA。这甚至有可能吗?内部分配的自动到期企业应用程序?

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

+0

我在实践中看不到任何标准的可能性,但也许苹果支持可以帮助你后特殊要求=) – Ossir

+0

这是什么目的? – Peres

+0

@JackyBoy想要发布演示并确保它在某段时间后无法在用户的设备上工作。 – user573117

回答

0

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

显而易见的解决方案是在应用程序第一次启动时保存日期,检查每次应用程序启动(或前台等)时拒绝做任何事情,如果开始日期比当前时间早30天以上。

该方法的问题是用户可以随时删除并重新安装应用程序,从而重置时钟。为了解决这个问题,您需要将该设备的首次启动日期保存在用户删除应用程序时不会被删除的地方。这可能意味着发送第一个启动日期和一些设备标识符到您的服务器。这不是防弹的 - 用户可以随时关闭您的网络访问权限,以便您无法使用服务器登录 - 但这可能已足够。

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

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

如果您希望应用程序在从应用程序构建开始的某段时间后过期,那就更简单了。只需将构建日期(或过期日期)存储在应用程序的一部分资源中,并定期检查当前日期。

0

如果你想在设备停止了一定时间后工作:

#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是一个月秒。