2012-09-25 15 views
5

Background:errore utilizzando il "App Lock" profilo di configurazione impostazione (alias "modalità kiosk") con un iPad/iOS6.0

Apple fornisce una "modalità kiosk" per i loro iPad come parte di iOS6 che blocca il dispositivo in un'unica applicazione (anche gli stivali direttamente nell'app). Ottimo per l'utilizzo di iPad in vendita al dettaglio/ristoranti/ecc.

Per utilizzare questo, il dispositivo deve prima essere configurato come dispositivo "Supervisionato" utilizzando Apple Configurator. Quindi aggiungi una voce speciale a un profilo di configurazione chiamato "App Lock". Ho seguito il recently-updated configuration profile document. In sostanza, basta impostare PayloadType come "com.apple.app.lock" e aggiungere una proprietà denominata "Identificatore" che è impostata sul valore dell'ID del bundle dell'applicazione.

Quando provo ad aggiungere il profilo di configurazione all'iPad (tramite un collegamento Safari, MDM o Apple Configurator), lo rifiuta.

L'uscita della console in Xcode evidenzia quanto segue:

Sep 24 17:51:56 Test-iPad mc_mobile_tunnel[487] <Notice>: (Note) MDM: Attempting to perform Supervised request: ProfileList 
Sep 24 17:51:56 Test-iPad installd[30] <Error>: 0x2ff9f000 filter_attributes: Info.plist keys requested via MobileInstallationLookup/Browse in client Apple Configurator (via mobile_installation_proxy) were not found in MobileInstallation's cache. Please file a bug requesting that these keys be added: <CFBasicHash 0x1e58b0b0 [0x3d8f2100]>{type = mutable set, count = 1, 
    entries => 
     2 : <CFString 0x3d8de564 [0x3d8f2100]>{contents = "CFBundleSignature"} 
    } 
Sep 24 17:51:57 Test-iPad mc_mobile_tunnel[492] <Notice>: (Error) MC: MCAppWhitelistPayload Can't parse payload: NSError: 
    Desc : The payload “Test Profile” is invalid. 
    Sugg : The field “App” is invalid. 
    US Desc: The payload “Test Profile” is invalid. 
    US Sugg: The field “App” is invalid. 
    Domain : MCPayloadErrorDomain 
    Code : 2000 
    Type : MCFatalError 
    Params : (
     "Test Profile" 
    ) 
    ...Underlying error: 
    NSError: 
    Desc : The field “App” is invalid. 
    US Desc: The field “App” is invalid. 
    Domain : MCPayloadErrorDomain 
    Code : 2003 
    Type : MCFatalError 
    Params : (
     App 
    ) 
Sep 24 17:51:57 Test-iPad mc_mobile_tunnel[492] <Notice>: (Error) MC: Payload “(null)” contains ignored fields. They are: <CFBasicHash 0x20819140 [0x3d8f2100]>{type = mutable dict, count = 1, 
    entries => 
     1 : <CFString 0x1f527bd0 [0x3d8f2100]>{contents = "Identifier"} = <CFString 0x1f527c10 [0x3d8f2100]>{contents = "com.hubworks.myapp"} 
    } 
Sep 24 17:51:57 Test-iPad mc_mobile_tunnel[492] <Notice>: (Error) MC: Cannot create profile of type “com.apple.app.lock”. Error: NSError: 
    Desc : The payload “Test Profile” is invalid. 
    Sugg : The field “App” is invalid. 
    US Desc: The payload “Test Profile” is invalid. 
    US Sugg: The field “App” is invalid. 
    Domain : MCPayloadErrorDomain 
    Code : 2000 
    Type : MCFatalError 
    Params : (
     "Test Profile" 
    ) 
    ...Underlying error: 
    NSError: 
    Desc : The field “App” is invalid. 
    US Desc: The field “App” is invalid. 
    Domain : MCPayloadErrorDomain 
    Code : 2003 
    Type : MCFatalError 
    Params : (
     App 
    ) 
Sep 24 17:51:57 Test-iPad mc_mobile_tunnel[492] <Notice>: (Error) MC: Profile MCConfigurationProfile 0x1f526100, version 1: 
    Display Name: “Test Profile” 
    Identifier : home-macbook-air.local.2A8DC5A2-937E-4246-B2AF-7C756C30C447 
    UUID  : E06A5B33-9CD3-40CB-8611-0479E642B427 
    Is Stub  : No 
    Locked  : No 
    Encrypted : No 
    Trusted  : 2 
    Signed  : Yes 
    Signed by : Apple Configurator (58:55:CA:F7:24:B9) 
    Can't parse profile: NSError: 
    Desc : The profile “Test Profile” is invalid. 
    Sugg : The payload “Test Profile” is invalid. 
    US Desc: The profile “Test Profile” is invalid. 
    US Sugg: The payload “Test Profile” is invalid. 
    Domain : MCProfileErrorDomain 
    Code : 1000 
    Type : MCFatalError 
    Params : (
     "Test Profile" 
    ) 
    ...Underlying error: 
    NSError: 
    Desc : The payload “Test Profile” is invalid. 
    Sugg : The field “App” is invalid. 
    US Desc: The payload “Test Profile” is invalid. 
    US Sugg: The field “App” is invalid. 
    Domain : MCPayloadErrorDomain 
    Code : 2000 
    Type : MCFatalError 
    Params : (
     "Test Profile" 
    ) 
    ...Underlying error: 
    NSError: 
    Desc : The field “App” is invalid. 
    US Desc: The field “App” is invalid. 
    Domain : MCPayloadErrorDomain 
    Code : 2003 
    Type : MCFatalError 
    Params : (
     App 
    ) 
    Extra info: 
    { 
     isPrimary = 1; 
    } 
Sep 24 17:51:57 Test-iPad mc_mobile_tunnel[492] <Notice>: (Error) MC: Failed to parse profile data. Error: NSError: 
    Desc : The profile “Test Profile” is invalid. 
    Sugg : The payload “Test Profile” is invalid. 
    US Desc: The profile “Test Profile” is invalid. 
    US Sugg: The payload “Test Profile” is invalid. 
    Domain : MCProfileErrorDomain 
    Code : 1000 
    Type : MCFatalError 
    Params : (
     "Test Profile" 
    ) 
    ...Underlying error: 
    NSError: 
    Desc : The payload “Test Profile” is invalid. 
    Sugg : The field “App” is invalid. 
    US Desc: The payload “Test Profile” is invalid. 
    US Sugg: The field “App” is invalid. 
    Domain : MCPayloadErrorDomain 
    Code : 2000 
    Type : MCFatalError 
    Params : (
     "Test Profile" 
    ) 
    ...Underlying error: 
    NSError: 
    Desc : The field “App” is invalid. 
    US Desc: The field “App” is invalid. 
    Domain : MCPayloadErrorDomain 
    Code : 2003 
    Type : MCFatalError 
    Params : (
     App 
    ) 
    Extra info: 
    { 
     isPrimary = 1; 
    } 
+1

Ecco il profilo di configurazione che sto utilizzando (con informazioni di identificazione personale modificate): http://www.pastebin.com/srB9iqHY – looselycoupled

risposta

7

ho capito! Non ho letto male o Apple ha lasciato un piccolo dettaglio nel loro configuration profile reference. Per evitare l'errore, la coppia chiave/valore "Identifier"/bundleId deve essere racchiusa in un dizionario, a sua volta il valore di una chiave denominata "App". Vedere qui sotto:

<?xml version="1.0"?> 
<plist version="1.0"> 
    <dict> 
    <key>PayloadContent</key> 
    <array> 
     <dict> 
     <key>App</key> 
     <dict> 
      <key>Identifier</key> 
      <string>bundle_identifier_of_the_app</string> 
     </dict> 
     <key>PayloadType</key> 
     <string>com.apple.app.lock</string> 
     <key>PayloadIdentifier</key> 
     <string>#######-#######-#######-######</string> 
     <key>PayloadUUID</key> 
     <string>#######-#######-#######-######</string> 
     <key>PayloadVersion</key> 
     <integer>#</integer> 
     </dict> 
    </array> 
    <key>PayloadType</key> 
    <string>Configuration</string> 
    <key>PayloadDisplayName</key> 
    <string>##########</string> 
    <key>PayloadIdentifier</key> 
    <string>######-#####-######-#####</string> 
    <key>PayloadUUID</key> 
    <string>######-######-#####-#####</string> 
    <key>PayloadVersion</key> 
    <integer>#</integer> 
    </dict> 
</plist> 
+0

Questo vale anche per ios8? Può funzionare anche su dispositivi iPod Touch? –

0

Sì ancora lavorando in iOS 9.1

ed è possibile aggiungere le opzioni in questo modo:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN""http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
    <dict> 
<key>PayloadContent</key> 
<array> 
     <dict> 
     <key>App</key> 
     <dict> 
      <key>Identifier</key> 
      <string>bundle_identifier_of_the_app</string> 
      <key>Options</key> 
      <dict> 
      <key>DisableAutoLock</key> 
      <true/> 
      <key>DisableVolumeButtons</key> 
      <true/> 
      </dict> 
     </dict> 
     <key>PayloadType</key> 
     <string>###.#####.#####</string> 
     <key>PayloadIdentifier</key> 
     <string>com.klangerfinder.lockdown</string> 
     <key>PayloadUUID</key> 
     <string>######-######-#####-#####</string> 
     <key>PayloadVersion</key> 
     <integer>1</integer> 
     </dict> 
    </array> 
    <key>PayloadType</key> 
    <string>Configuration</string> 
    <key>PayloadDisplayName</key> 
    <string>AppLockDown</string> 
    <key>PayloadIdentifier</key> 
    <string>###.#####.#####</string> 
    <key>PayloadUUID</key> 
    <string>######-######-#####-#####</string> 
    <key>PayloadVersion</key> 
    <integer>1</integer> 
</dict> 
</plist> 

Ci sono molte vecchie post's là fuori. Questo e quanto sopra sono quelli reali funzionanti !!!