【发布时间】:2017-08-02 16:57:46
【问题描述】:
是否有任何方法可以在编译期间设置特定日期,使使用 ad-hoc 分发编译的应用程序将过期并且一段时间后无法运行?
【问题讨论】:
-
我想给一些用户提供一个测试版。但是,我希望在测试期后禁用该应用程序。那我还能做什么?
是否有任何方法可以在编译期间设置特定日期,使使用 ad-hoc 分发编译的应用程序将过期并且一段时间后无法运行?
【问题讨论】:
配置文件和证书不能这样工作。如果您需要限制对应用的访问您必须通过代码来完成。
请注意,越狱设备可能会绕过您的验证。 此外,如果您使用设备日期来限制访问,更改了设备时间和日期的用户将能够访问。
【讨论】:
只是否你不能对带有编译或运行时间的配置文件做任何事情。这只是 iOS 应用程序的手动操作。您需要根据您的要求进行安排,例如何时使用开发以及何时使用 ad-hoc 或分发。编译器不包含有关配置文件的任何知识。
【讨论】:
编译器不“知道”用于创建和签署二进制文件的配置文件。这一步在构建过程中走得太远了。
您能做的最好的事情是撤销临时分发证书(不是配置文件)。
【讨论】:
我发现一个简单的解决方法很有用。 硬编码您的到期日期,并在每次加载应用时将其与当前日期进行比较:
NSDate* todaysDate = [NSDate Date];
NSDate* expirationDate = [NSDate dateFromString: expirationStr];
if([todaysDate laterDate:expirationDate] == todaysDate){
[self performSegueWithIdentifier:@"segueToExpirationVC" sender:self];
}
在我的 initialViewController 的 viewDidLoad 中,我检查当前日期是否超过了我为应用设置的“到期日期”。如果是,那么我对没有按钮的视图控制器执行 segue 以脱离 VC。在此 ViewController 上,您可以显示一条类似“此应用程序的测试版已过期”的消息。我经常还会对此 ViewController 进行调查,以询问我的 beta 测试人员使用该应用程序的体验。
这实际上使应用程序无法使用,因为在您设置的到期日期它将转换为无法离开的视图控制器。
注意:如果满足相同的日期比较条件,您可以通过以编程方式更改初始视图控制器来执行类似的操作。
【讨论】: