Bevor jemand meine Frage als Duplikat markiert, lassen Sie mich Ihnen sagen, dass ich alle Antworten durchgegangen bin und ich keine Lösung finden konnte.Zugriff auf Inhalte von einem Remote-Gerät
So, hier ist meine Frage,
Ich versuche, die userdefaults wie serverserver, UDID, und Language erid so schnell einzustellen, wie die App eine Taste startet mit.
Alle diese Variablen werden auf der Serverseite festgelegt.
Ich weiß, dass ich eine Logik schreiben kann, um diese pliste herunterzuladen und auf die Daten zuzugreifen, aber hier kann ich nur eine App schreiben und der Server variiert für alle verschiedenen Kunden, die wir haben.
Also, wenn diese App von einem Server auf ein Gerät geschoben wird, wird diese Plist auch gedrückt.
Aber immer wenn ich versuche, auf den Inhalt zuzugreifen, gibt es null zurück und die App stürzt ab (was mit der gleichen Logik in objective-c funktionierte, möglicherweise aufgrund der Tatsache, dass nil als Wert in Ziel c genommen wird) .
Meine Frage ist, wie ist das möglich, weil, wenn ein Profil in dem Gerät installiert ist, wie die App auf den Inhalt ohne Logik in den Code geschrieben zugreifen.
Und das ist die plist
<?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>CommandUUID</key>
<string>InstallApplication;Collection=302</string>
<key>Command</key>
<dict>
<key>RequestType</key>
<string>InstallApplication</string>
<key>ManifestURL</key>
<string>https://%ServerName%:%ServerPort%/MDM/apprepository/1/appupload/2/2/Manifest.plist</string>
<key>ManagementFlags</key>
<integer>1</integer>
<key>ChangeManagementState</key>
<string>Managed</string>
<key>Configuration</key>
<dict>
<key>ServerName</key>
<string>%ServerName%</string>
<key>ServerPort</key>
<string>%ServerPort%</string>
<key>UDID</key>
<string>%udid%</string>
<key>ErID</key>
<string>%erid%</string>
<key>IsLanguagePackEnabled</key>
<string>%license_pack_enabled%</string>
</dict>
</dict>
Vielen Dank im Voraus.
Edit: Ich habe versucht, die Standardwerte registriert, habe ich versucht DictionaryForKey statt objectForKey mit dem Schlüssel Wesen „com.apple.configuration.managed“ (beide Fälle machen keinen Unterschied) und meinen Code in schnellen Verwendung ist
let userDefaults : NSUserDefaults = NSUserDefaults.standardUserDefaults()
if let dict = userDefaults.dictionaryForKey(mdmiosagent_Constants.MANAGED_APP_CONFIGURATION) {
NSUserDefaults.standardUserDefaults().registerDefaults(dict)
if let serverName = dict[mdmiosagent_Constants.SERVERNAMEKEY] as? String{
}
if let serverPort = dict[mdmiosagent_Constants.SERVERPORTKEY] as? String{
}
if let UDID = dict[mdmiosagent_Constants.UDIDKEY] as? String{
}
if let languagePack = dict[mdmiosagent_Constants.IS_LANG_PACK_ENABLED] as? String{
}
if let ErID = dict[mdmiosagent_Constants.ERIDKEY] as? String{
}
if let authToken = dict[mdmiosagent_Constants.AUTHTOKENKEY] as? String {
}else {
authToken = ""
}
if let scope = dict[mdmiosagent_Constants.SCOPEKEY] as? String {
} else {
scope = ""
}
}
wobei die Konstanten deklariert werden als
static let SERVERNAMEKEY = "ServerName"
static let SERVERPORTKEY = "ServerPort"
static let ERIDKEY = "ErID"
static let UDIDKEY = "UDID"
static let AUTHTOKENKEY = "authtoken"
static let SCOPEKEY = "SCOPE"
static let MANAGED_APP_CONFIGURATION = "com.apple.configuration.managed"
static let IS_LANG_PACK_ENABLED = "IsLanguagePackEnabled"
Bitte zeigen Sie uns Ihren Code auch. –