繁体   English   中英

用于企业内部分发的自到期企业应用程序?

[英]Self-Expiring Enterprise App for In-House Distribution?

我一直在搜索,无法找到是否可行。 有人要求创建一个IPA,该IPA具有“将在30天内到期的自到期配置文件”。 那有可能吗?

当我尝试在会员中心创建配置文件时,它没有让我选择何时过期的设置。

如果您希望设备在一定时间后停止工作:

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

具有“可在30天后过期的自过期配置文件”的IPA。

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM