Я хотел бы знать, возможно ли сохранить полученную аутентификацию с течением времени.
Вот мой код:
- (IBAction)toggleAuthentification:(id)sender {
if (AuthorizationCopyRights(authRef, &authRights, kAuthorizationEmptyEnvironment, authFlags ^ kAuthorizationFlagInteractionAllowed, NULL) == errAuthorizationSuccess) {
AuthorizationFree(authRef, kAuthorizationFlagDestroyRights);
authRef = NULL;
AuthorizationCreate(NULL, kAuthorizationEmptyEnvironment, kAuthorizationFlagDefaults, &authRef);
[sender setState:NSOffState];
} else if (AuthorizationCopyRights(authRef, &authRights, kAuthorizationEmptyEnvironment, authFlags, NULL) == errAuthorizationSuccess) {
AuthorizationMakeExternalForm(authRef, &extAuthRef);
[sender setState:NSOnState];
NSDictionary *authRightInfo;
if (AuthorizationRightGet(authRights.items[0].name, (CFDictionaryRef *)&authRightInfo) == errAuthorizationSuccess) {
//[authRightInfo valueForKey:@"timeout"] == 300
keepAuthTimer = [NSTimer scheduledTimerWithTimeInterval:([[authRightInfo valueForKey:@"timeout"] unsignedShortValue] - 10) target:self selector:@selector(keepAuthentification:) userInfo:nil repeats:YES];
}
} else {
[sender setState:NSOffState];
}
}
- (void)keepAuthentification:(NSTimer *)aTimer {
NSLog(@"%d", AuthorizationCopyRights(authRef, &authRights, kAuthorizationEmptyEnvironment, authFlags ^ kAuthorizationFlagInteractionAllowed, NULL));
NSLog(@"keepAuth", aTimer);
}
Шаг 1: нажмите кнопку, которая вызывает toggleAuthentification:
, и выполните авторизацию успешно.
Шаг 2: Через 290 секунд я получаю 0
и keepAuth
с консоли, поэтому мой NSTimer работает.
Шаг 3: подождите еще несколько секунд (более 10) и снова нажмите на мою кнопку.Аут панель снова появится !!!
Почему мой вызов AuthorizationCopyRights
в keepAuthentification:
не сбрасывает время ожидания 300 секунд (для этого права авторизации)?
Я хотел бы иметь приложение, в котором вы должныведение журнала только один раз за выполнение приложения или пока вы вручную не запросите выход из системы, нажав кнопку.