Ios7 使用自主的SingleAppModePermittedAppID和UIAccessibilityRequestGuidedAccessSession以及Meraki作为MDM进入单一应用模式

Ios7 使用自主的SingleAppModePermittedAppID和UIAccessibilityRequestGuidedAccessSession以及Meraki作为MDM进入单一应用模式,ios7,mdm,guided-access,Ios7,Mdm,Guided Access,我使用Apple Configurator将少量设备设置为受监控设备。 但是,我无法使用API使应用程序成功进入单一应用程序模式 我创建了一个配置文件,在Meraki控制台中设置了限制,特别是我在Meraki控制台中将“允许的单一应用模式”字段设置为我的应用程序包id 我假设Meraki中的这个字段映射到自治SingleAppModePermittedAppIds配置键。我已将我的IPA应用程序(不是从应用商店安装的)添加到受监控设备上 配置文件和应用程序已成功安装在iPad上,但调用UIAcc

我使用Apple Configurator将少量设备设置为受监控设备。 但是,我无法使用API使应用程序成功进入单一应用程序模式

我创建了一个配置文件,在Meraki控制台中设置了限制,特别是我在Meraki控制台中将“允许的单一应用模式”字段设置为我的应用程序包id

我假设Meraki中的这个字段映射到
自治SingleAppModePermittedAppIds
配置键。我已将我的IPA应用程序(不是从应用商店安装的)添加到受监控设备上

配置文件和应用程序已成功安装在iPad上,但调用
UIAccessibilityRequestGuidedAccessSession()
仍然失败

电话本身非常简单:

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];
    }
});
设备日志显示以下条目

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.
Mar 26 11:42:31 BayLeaf-Kiosk-4 backboardd[28]:HID:拒绝“被动”连接“xxxxxx”访问受保护的服务。
Mar 26 11:42:31 BayLeaf-Kiosk-4 xxxxxx[412]:请求引导访问
3月26日11:42:31 BayLeaf-Kiosk-4 xxxxxx[412]:viewDidLoad接到电话
Mar 26 11:42:31 BayLeaf-Kiosk-4 xxxxxx[412]:调用了ApplicationIDBecomeActive
Mar 26 11:42:31 BayLeaf-Kiosk-4 xxxxxx[412]:无法进入引导访问
3月26日11:42:31 BayLeaf-Kiosk-4 backboardd[28]:HID:拒绝“速率控制”连接“xxxxxx”对受保护服务的访问。
是否有人能够成功地让他们的应用程序进入引导访问? 我唯一能想到的是我的应用不在appstore中,或者指定的捆绑Id不正确,但我找不到导出Meraki创建的.mobileconfig的方法来验证它是否与我的应用匹配

我真是束手无策。。我在想也许微软Surface(它也有一个单一的应用程序模式链接到一个帐户)可能更容易做到

非常感谢您的帮助。 谢谢

PS:链接@zeiteisen的回复,这对我了解这一点非常有帮助

更新:我非常确定bundle Id是正确的,如果我在同一配置文件中使用我的应用程序名称/bundle Id作为单一应用程序模式设置的值,我的应用程序立即进入单一应用程序模式(这不是我想要的,我希望它以编程方式进入/退出单一应用程序模式,而不是被锁定)


更新2:不清楚是什么具体的更改解决了这个问题,我只是从Meraki删除了应用程序,删除了我的配置配置文件,并将它们都添加回,一旦Meraki推送了配置文件和应用程序,它就工作了。

确保您的配置文件看起来像这样,并且应该工作正常:

<key>autonomousSingleAppModePermittedAppIDs</key>
<array>
    <string>org.mycompany.myapp</string>
</array>
自主SingleAppModePermittedAppId
org.mycompany.myapp
此外--我是通过反复试验的方式了解到这一点的--如果您尝试在
viewDidLoad
viewwillbeen
viewdidbeen
上锁定应用程序,它将不起作用。我从您的日志中看到,您正试图将应用程序锁定在
viewDidLoad
中。 试着用定时器代替,也许这是你的问题

[self performSelector:@selector(handleLockButton:) withObject:nil afterDelay:1];
当然,你需要你的bundle ID在应用的白名单上,这些应用可以将自己锁定在引导访问中

快乐编码:)

Z