Überprüfen Sie, ob das Gerät UIFeedbackGenerator in iOS 10 unterstützt

8

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.

    
Kris Gellci 19.09.2016, 02:21
quelle

3 Antworten

12

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:

  1. Wenn Sie diese verwenden, kann Ihre App während der App Review im App Store von Apple abgelehnt werden, aber derzeit scheint es keine andere Möglichkeit zu geben.
  2. Wir wissen nicht, was die tatsächlichen Werte darstellen.

Besonderer Dank geht an Tim Oliver und Steve T-S , die das mit verschiedenen Geräten getestet haben. Ссылка

    
Ben Guild 20.09.2016 10:58
quelle
2

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%     
chrisamanse 23.12.2016 09:04
quelle
1
%Vor%     
Wan Mook Kang 10.03.2017 07:12
quelle

Tags und Links