Einige Benutzer der mein Lager Pro App haben mit angeschrieben, einige hatten Synchronisationsprobleme, die ich aus der Ferne beheben konnte. Es gab aber auch einen Fall, bei dem eine „Fernwartung“ nicht möglich war und auch die Ausbringung eines Updates für die App keinerlei Lösung bot.
Für Entwickler: Bisher konnte im AppDelegate immer wieder mit den Funktionen
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
let current = UNUserNotificationCenter.current()
current.requestAuthorization(options: [.alert, .badge, .sound]) { (granted, error) in
if let error = error {
print("Fehler bei Erlaubnis \(error.localizedDescription)")
}
}
DispatchQueue.main.async {
print("Registriere Push Nachrichten")
application.registerForRemoteNotifications()
if application.isRegisteredForRemoteNotifications == true {
NSLog("Hintergrundaktualisierung ist eingeschaltet")
}
}
return true
}
die Aktualisierung per Push Nachricht angefordert werden. Bis iOS 12 funktionierte dies problemlos und die Delegate Funktionen
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
print("Registered for remote notifications")
let tokenParts = deviceToken.map { data -> String in
return String(format: "%02.2hhx", data)
}
let token = tokenParts.joined()
// 2. Print device token to use for PNs payloads
print("Device Token: \(token)")
}
func application(_ application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) {
print("Remote notification registration failed")
print(error)
}
wurden ordentlich aufgerufen und das Gerät konnte für Push Nachrichten registriert werden.
Aktuell scheint es jedoch so zu sein, dass nur Geräte, bei denen eine SIM Karte installiert ist oder war diese Funktionen aufrufen. So ergab ein Versuch der Registrierung mit einem iPhone XS eine ordentliche Ausführung der Funktion. Das Gerät wird täglich mit einer SIM Karte verwendet.
Bei einem iPhone 7 ohne SIM Karte sah die Geschichte anders aus. Das Gerät war „frisch“ mit iOS 13.4.1 installiert und mit einem WLAN verbunden und aktiviert worden. Der identische Code auf dem iPhone 7 konnte zwar ausgeführt werden, allerdings wurden die Delegate Funktionen didRegisterForRemoteNotificationsWithDeviceToken und didFailToRegisterForRemoteNotificationsWithError nicht ausgeführt.
Nach mehreren Stunden Versuchen ergab dann die Konsole von Xcode bei Betrieb des Gerätes den folgenden Fehler:
Connection 55: default TLS Trust evaluation failed(-9807)
Diese Ausgabe erschien beim iPhone XS nicht. Es folgten noch weitere, nicht wirklich aussagekräftige Fehlermeldungen.
Nachdem dann eine SIM Karte im iPhone 7 installiert wurde, das iPhone neu gestartet wurde, die App gelöscht und per Xcode neu installiert wurde, funktionierte plötzlich die Registrierung und entsprechende Push Nachrichten wurden sofort empfangen.
Augenscheinlich muss es sich hierbei um einen Bug innerhalb von iOS 13 handeln. Was machen denn die Benutzer die beispielsweise ein iPad nur mit Wifi besitzen und die technisch schon keine Möglichkeit haben eine SIM Karte zu installieren?
Ein entsprechender Bug unter der Nummer FB7669283 wurde bei Apple eröffnet, wir dürfen also auf eine Antwort gespannt sein.