我一直在寻找,但无法确定这是否可行。已经提出了创建IPA的请求,其中“自用过期配置文件将在30天后到期”。这甚至是可能吗?
当我尝试在会员中心创建配置文件时,它不会让我选择设置何时到期。
答案 0 :(得分: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是一个月的秒数。
答案 1 :(得分:0)
具有"自我配置的配置文件的IPA,该配置文件将在30天后到期"。
显而易见的解决方案是在第一次启动应用程序时保存日期,每次应用程序启动时检查(或者到达前台等),如果开始日期超过,则拒绝执行任何操作当前时间前30天。
该方法的问题在于用户可以随时删除并重新安装应用程序,从而重置时钟。要解决这个问题,您需要将该设备的首次启动日期保存在用户删除应用时无法删除的位置。这可能意味着将第一个启动日期和一些设备标识符发送到您的服务器。它不是防弹的 - 用户可以随时关闭您的网络访问权限,以便您无法在服务器上办理登机手续 - 但这可能已经足够了。
下一个问题是选择识别设备(或用户)的方法。 UDID似乎是一个显而易见的选择,但它已被弃用,并可能在未来某个时候消失。 UDID有许多替代方案,但大多数仍违反禁止使用UDID的精神。由于您无论如何都需要使用服务器,您可能需要考虑让用户在服务器上创建一个帐户(当然是通过应用程序),以便开始时间与用户帐户相关联而不是设备
最后,您应该知道此类事情会阻止您的应用在App Store中获得批准。在演示期结束后,应用程序不应该停止工作。我知道你说这是一个企业应用程序,但如果是这样的话,很难理解你为什么还需要这种功能。您可以通过使功能依赖于服务器上的用户帐户来解决此问题 - 在这种情况下,您可以暂停或终止用户帐户以切断访问权限,而不是让应用程序拒绝工作。
如果您希望应用程序在应用程序构建之后的一段时间后过期,那么问题就更加简单了。只需将构建日期(或到期日期)存储在应用程序的某个资源中,并定期检查当前日期。