Как сделать приложение, которое истекает в определенное время в iphone? - PullRequest
1 голос
/ 07 января 2012

Я создаю приложение, срок действия которого истекает после определенного срока. означает, что пользователь не может получить доступ к его методам, и пользователь должен купить или зарегистрировать загруженное приложение. пользователь может открыть приложение, но через некоторое время пользователь не может использовать функциональность приложения. Возможно ли это?

Ответы [ 2 ]

1 голос
/ 17 октября 2012

Я сделал это с помощью сценария сборки, который создает файл с отметкой времени каждый раз, когда я компилирую. Файл является частью цели сборки и развертывается вместе с приложением. Когда приложение запускается, код проверяет временную метку в файле и, если прошло много времени, приложение выдает страницу с предупреждением и больше ничего не делает.

Теперь отказ от ответственности . Я использую эту систему с версиями разработки корпоративных приложений. Это предотвращает загромождение старых версий разработки и не позволяет людям получать старые версии разработки и думать, что они последние. Я бы никогда не подумал об использовании этой системы в развернутых приложениях.

Редактировать : По запросу я добавляю код и скрипт, который использую. Это не здорово, но это работает. Если кто-то хотел бы улучшить его, я был бы рад видеть лучшие версии. У меня установлен скрипт для запуска прямо перед задачей «Скомпилировать источники»

builddate=`date`

# if BuildDateString doesn't exist, add it
/usr/libexec/PlistBuddy -c "Add :BuildDateString string $builddate" "$TARGET_BUILD_DIR/$INFOPLIST_PATH"
# and if BuildDateString already existed, update it
/usr/libexec/PlistBuddy -c "Set :BuildDateString $builddate" "$TARGET_BUILD_DIR/$INFOPLIST_PATH"

Код Objective-C, который я использую, существует в статической библиотеке кода, которую я обычно использую в значительном количестве проектов. Он также включает в себя простой UIViewController с именем TSExpiredViewController для отображения просроченного сообщения, если это необходимо.

+ (void)expireAppAfterOneWeek {
    [self expireAppAfter:604800];
}

+ (void)expireAppAfter:(NSTimeInterval)secondsAfterBuilds {
    id<UIApplicationDelegate> appDelegate = [UIApplication sharedApplication].delegate;

    NSString *buildDateString = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"BuildDateString"];
    NSDateFormatter *df = [[NSDateFormatter alloc] init];
    df.dateFormat = @"EEE MMM dd kk:mm:ss zz yyyy";
    NSDate *buildDate = [df dateFromString:buildDateString];

    if (-[buildDate timeIntervalSinceNow] > secondsAfterBuilds) {
        appDelegate.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
        TSExpiredViewController *viewController = [[TSExpiredViewController alloc] init];
        appDelegate.window.rootViewController = viewController;
        [appDelegate.window makeKeyAndVisible];
    }
}
0 голосов
/ 07 января 2012

Прежде всего:

Apple не отклонит ваше приложение, если вы используете какую-либо функцию, которая не указана в его частном API.

Так что, если вы хотите заблокировать ваше приложение по истечении определенного времени, вы можете реализовать его логически.

Для этого Как только ваше приложение будет загружено на устройство, сохраните текущее время и дату в настройках приложения (по умолчанию для пользователя). Хотя в этом варианте Если пользователь удалит приложение и переустановит приложение, настройки будут сброшены.

Итак, существуют различные места, которые не удаляются до тех пор, пока устройство iOS не будет сброшено (как брелок). Apple предоставляет методы для хранения данных в цепочке для ключей.

Следующее, что вам нужно сделать, это каждый раз, когда пользователь открывает ваше приложение, вам нужно проверять текущее время с сохраненным временем в приложении.

Если он подтверждает ваш лимит, вы можете разрешить пользователю использовать приложение или отправить предупреждение и делать любые действия, которые вы хотите.

Надеюсь, это может помочь вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...