2014-03-26 1 views
5

Ich habe eine kleine Anzahl von Geräten, die ich mit Apple Configurator überwacht habe. Ich kann die App jedoch nicht erfolgreich über die API UIAccessibilityRequestGuidedAccessSession in den Einzelanwendungsmodus versetzen.Verwenden von autonomeSingleAppModePermittedAppIDs und UIAccessibilityRequestGuidedAccessSession zusammen mit Meraki als MDM, um in den einzelnen App-Modus zu gelangen

Ich habe ein Konfigurationsprofil mit Einschränkungen in der Meraki-Konsole erstellt, insbesondere habe ich das Feld "Allowed Single App Mode" in der Meraki-Konsole auf meine App-Bundle-ID gesetzt.

Ich gehe davon aus, dass dieses Feld in Meraki dem autonomousSingleAppModePermittedAppIDs Konfigurationsschlüssel entspricht. Ich habe meine App hinzugefügt, die eine IPA (nicht aus dem App Store installiert) ist, die auf dem überwachten Gerät installiert werden soll.

Das Profil und die App wurde erfolgreich auf dem iPad installiert, aber der Anruf an UIAccessibilityRequestGuidedAccessSession() schlägt immer noch fehl.

Der Anruf selbst ist ziemlich einfach:

NSLog(@"requesting guided access"); 
UIAccessibilityRequestGuidedAccessSession(YES, ^(BOOL didSucceed) { 
    if (didSucceed) { 
     NSLog(@"entered guided access"); 
     self.inGuidedSessionMode = YES; 
     [[[UIAlertView alloc] initWithTitle:@"entered single access mode" message:nil delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil] show]; 
    } 
    else { 
     NSLog(@"failed to enter guided access"); 
     [[[UIAlertView alloc] initWithTitle:@"Unable to enter single access mode" message:nil delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil] show]; 
    } 
}); 

Das Gerät Protokoll zeigt die folgenden Einträge

Mar 26 11:42:31 BayLeaf-Kiosk-4 backboardd[28] <Error>: HID: The 'Passive' connection 'xxxxxx' access to protected services is denied. 
Mar 26 11:42:31 BayLeaf-Kiosk-4 xxxxxx[412] <Warning>: requesting guided access 
Mar 26 11:42:31 BayLeaf-Kiosk-4 xxxxxx[412] <Warning>: viewDidLoad got called 
Mar 26 11:42:31 BayLeaf-Kiosk-4 xxxxxx[412] <Warning>: applicationDidBecomeActive called 
Mar 26 11:42:31 BayLeaf-Kiosk-4 xxxxxx[412] <Warning>: failed to enter guided access 
Mar 26 11:42:31 BayLeaf-Kiosk-4 backboardd[28] <Error>: HID: The 'Rate Controlled' connection 'xxxxxx' access to protected services is denied. 

jemand in der Lage ist erfolgreich ihre App haben geführt Zugang eingeben? Das einzige, was mir einfällt, ist, dass meine App nicht im Appstore ist oder dass die angegebene Paket-ID falsch ist, aber ich konnte keine Möglichkeit finden, das von Meraki erstellte .mobileconfig zu exportieren, um zu überprüfen, ob es meiner App entspricht.

Wirklich bei meinem Verstand Ende auf diesem .. Ich denke, vielleicht Microsoft Surface (die auch einen einzigen App-Modus mit einem Konto verknüpft hat) könnte nur die einfachere Sache zu tun.

Würde mich über jede Hilfe freuen. Danke!

PS: Verknüpfung this Antwort von @zeiteisen, die sehr hilfreich war, um mich zu diesem Punkt zu bringen.

UPDATE: Ich bin mir ziemlich sicher, dass die Bundle-ID stimmt. Wenn ich meinen App-Namen/Bundle-ID als Wert für die Einstellung für den einzelnen App-Modus im selben Konfigurationsprofil verwende, wechselt meine App sofort in den Single-App-Modus ist nicht das, was ich will, ich möchte es einzelnen App-Modus programmgesteuert eingeben/beenden und nicht gesperrt werden).

UPDATE2: Es ist unklar, welche spezifische Änderung das Problem behoben, ich löschte einfach die App von Meraki, löschte mein Konfigurationsprofil, fügte sie beide zurück und sobald das Profil und App von Meraki geschoben wurden, funktionierte es einfach.

Antwort

0

sicherstellen, dass Ihr Konfigurationsprofil wie folgt aussieht und es sollte funktionieren:

<key>autonomousSingleAppModePermittedAppIDs</key> 
<array> 
    <string>org.mycompany.myapp</string> 
</array> 
3

auch - ich habe diese die Trial-and-error Art und Weise gelernt - wenn Sie versuchen, auf in den App Sperren viewDidLoad oder viewWillAppear/viewDidAppear, es wird nicht funktionieren. In Ihren Protokollen sehen Sie, dass Sie versuchen, die App unter viewDidLoad zu sperren. Versuchen Sie stattdessen, einen Timer zu verwenden, vielleicht ist das Ihr Problem.

[self performSelector:@selector(handleLockButton:) withObject:nil afterDelay:1]; 

Natürlich müssen Sie Ihre Bundle-ID auf der Whitelist von Apps haben, die sich in den geführten Zugriff sperren können.

Glücklich Codierung :)

Z.