In iOS 10 gibt es eine neue API, die es Entwicklern ermöglicht, die taptic engine, UIFeedbackGenerator, zu verwenden.
Obwohl diese API unter iOS 10 verfügbar ist, funktioniert sie nur auf den neuen Geräten iPhone 7 und 7 plus. Es funktioniert nicht auf älteren Geräten einschließlich des 6S oder 6S Plus, auch wenn diese einen Taptic-Motor haben. Ich denke, die Taptic-Engine auf der 7 und 7 plus ist eine andere, mächtigere.
Ich kann anscheinend keine Möglichkeit finden, zu sehen, ob das Gerät die Verwendung der neuen API unterstützt. Ich möchte etwas Vibrationscode durch taptischen Code ersetzen, wo es Sinn macht.
Bearbeiten:
Hinzufügen der 3 konkreten Unterklassen für Suchzwecke: UIImpactFeedbackGenerator UINotificationFeedbackGenerator UISelectionFeedbackGenerator
Bearbeiten 2:
Ich habe eine Theorie, aber kein iPhone 7-Gerät, um es zu testen, also wenn Sie eine haben, geben Sie es eine Chance. UIFeedbackGenerator hat eine Methode namens prepare (). Beim Drucken einer Instanz von UIImpactFeedbackGenerator, habe ich festgestellt, dass es eine Eigenschaft mit dem Namen "vorbereitete", die 0 zeigen würde. Prepare () im Simulator oder auf iPhone 6S gedruckt und dann Drucken der Instanz zeigt immer noch vorbereitet als 0 vorbereitet. Kann jemand anrufen vorbereiten () auf einer Instanz von UIImpactFeedbackGenerator von einem iPhone7 und dann die Instanz in die Konsole zu drucken, um zu sehen, ob vorbereitete auf 1 gesetzt ist? Dieser Wert wird nicht angezeigt, aber es kann einen Weg geben, diese Informationen ohne private API zu erhalten.
Dies kann offensichtlich mit einem privaten API-Aufruf geschehen.
Ziel-C:
[[UIDevice currentDevice] valueForKey:@"_feedbackSupportLevel"];
Schnell:
UIDevice.currentDevice().valueForKey("_feedbackSupportLevel");
... Diese Methoden scheinen zurückzukehren:
0
= Taptic nicht verfügbar 1
= Erste Generation (getestet auf einem iPhone 6s) ... die UINotificationFeedbackGenerator
, etc. nicht unterstützt. 2
= Zweite Generation (auf einem iPhone 7 getestet) ... welche dies unterstützt . Leider gibt es hier zwei Vorbehalte:
Besonderer Dank geht an Tim Oliver und Steve T-S , die das mit verschiedenen Geräten getestet haben. Ссылка
Gegenwärtig ist der beste Weg, das Modell des Geräts zu überprüfen:
%Vor% Die Plattformnamen für iPhone 7 und 7 plus lauten: "iPhone9,1", "iPhone9,3", "iPhone9,2", "iPhone9,4"
Quelle: iOS: So ermitteln Sie das aktuelle iPhone / Gerätemodell in Swift?
Sie können eine Funktion erstellen:
%Vor%Tags und Links iphone ios ios10 taptic-engine