Eine schnelle Überprüfung von Near by Interaction, einer neuen Funktion in iOS 14.
Framework aus iOS14 SDK hinzugefügt.
Locate and interact with nearby devices using identifiers, distance, and direction.
Dies ermöglicht die Identifizierung und Interaktion mit Geräten in der Nähe mithilfe von Kennungen / Entfernungen / Richtungen.
Sie können nicht nur iOS14 verwenden (das im Herbst 2020 veröffentlicht werden soll), und es gibt eine Einschränkung, dass Sie es nur mit einem iPhone verwenden können, das mit einem U1-Chip ausgestattet ist. Ab September 2020 kann es nur auf Terminals der iPhone 11-Serie (11, 11 Pro, 11 Pro Max) verwendet werden.
Wenn Sie zustimmen, Standort / Kennung mit Geräten in der Nähe zu teilen, ist eine Interaktion möglich.
Ultra Wide Band (UWB) = Ein Chip, der drahtlose Kommunikation verwenden kann und als Ultra Wide Band Radio bezeichnet wird. Diese Kommunikationstechnologie wurde ursprünglich für industrielle und militärische Zwecke verwendet, aber es scheint das erste Mal zu sein, dass ein Verbraucherprodukt in Betrieb genommen wird. Es scheint, dass die Release-Version derzeit nur zur Beschleunigung von AirDrop verwendet wird. Wird sie jedoch für die Zusammenarbeit mit einem Tag zur Verhinderung verlorener Gegenstände oder für die Verwendung von Autoschlüsseln verwendet?
Bildquelle: https://developer.apple.com/documentation/nearbyinteraction
Verwenden Sie Server, Bluetooth, P2P-Kommunikation (Multipeer-Konnektivität) usw., um mit Geräten in der Nähe zu interagieren. Jedes Gerät erstellt eine "NISession" und verwendet das oben genannte Netzwerk, um Erkennungstoken ("NIDiscoveryToken") auszutauschen. Nach Erhalt des Tokens von der anderen Partei initiiert die App tatsächlich eine NI-Sitzung (Near by Interaction). Der U1-Chip des Geräts verwaltet den Datenaustausch, sodass NI kontinuierlich relative Positionen mit anderen Geräten bereitstellen kann.
let niSession = NISession()
Beim Erstellen einer Instanz einer Sitzung wird der Benutzer wahrscheinlich zur Erlaubnis aufgefordert.
Sobald Sie das Erkennungstoken der Person haben, mit der Sie kommunizieren, können Sie die Sitzung starten.
let token: NIDiscoveryToken = ...
let config = NINearbyPeerConfiguration(peerToken: token)
niSession.run(config)
Wenn eine Sitzung ausgeführt wird, wird das von NI festgelegte Token der anderen Partei überprüft, und wenn es gültig ist, kann "session (_: didUpdate :)" von "NISessionDelegate" aufgerufen werden, um Informationen über die relative Position mit dem Kommunikationspartner zu erhalten.
class ViewController: UIViewController {
func ...() {
niSession.delegate = self
}
}
extension ViewController: NISessionDelegate {
func session(_ session: NISession, didUpdate nearbyObjects: [NINearbyObject]) {
//NINearbyObject enthält Informationen zum Kommunikationspartner
}
}
Die Delegate-Methode wird auch benachrichtigt, wenn die Sitzung aufgrund der Hintergrundbewegung der App unterbrochen oder deaktiviert wird. Wird zum Neustart und zur Fehlerbehandlung verwendet.
public protocol NISessionDelegate : NSObjectProtocol {
optional func session(_ session: NISession, didRemove nearbyObjects: [NINearbyObject], reason: NINearbyObject.RemovalReason)
optional func sessionWasSuspended(_ session: NISession)
optional func sessionSuspensionEnded(_ session: NISession)
optional func session(_ session: NISession, didInvalidateWith error: Error)
}
NINearbyObject
Schauen Sie mit Xcode hinein.
@available(iOS 14.0, *)
open class NINearbyObject : NSObject, NSCopying, NSSecureCoding {
@NSCopying open var discoveryToken: NIDiscoveryToken { get }
}
@available(iOS 14.0, *)
@available(macOS, unavailable)
extension NINearbyObject {
public var distance: Float? { get }
public var direction: simd_float3? { get }
}
Ziemlich minimaler Inhalt. Sie können die folgenden drei Daten erhalten.
Der für Richtungsdaten verwendete Typ "simd_float3" ähnelt einem dreidimensionalen Vektor. Es scheint, dass es häufig in ARKit und SceneKit verwendet wird. Liegt es daran, dass das Discovery-Token abgerufen werden kann, weil bei der Kommunikation mit mehreren anderen Parteien die andere Partei identifiziert werden muss?
Gemäß der offiziellen Dokumentation sind die folgenden Einschränkungen erforderlich, um ein genaues Verhalten zu gewährleisten:
Es wird gesagt, dass das andere Terminal mit dem unten gezeigten Bild überprüft wird.
Bildquelle: https://developer.apple.com/documentation/nearbyinteraction/initiating_and_maintaining_a_session
Ich startete zwei Simulatoren und tauschte Entdeckungs-Token über P2P-Kommunikation miteinander aus, um relative Positionsinformationsdaten zu erhalten. Obwohl der Abstand von "NINearbyObject" problemlos ermittelt werden konnte, gibt die Richtung immer Null zurück. Dies kann nutzlos sein, wenn Sie es nicht auf der tatsächlichen Maschine bewegen.
Ich denke, es wäre interessant, es für ein Meet-up-Event oder ein Meeting für eine Dating-App zu verwenden. Auf der anderen Seite gibt es viele Einschränkungen, so dass ich den Eindruck habe, dass es noch nicht das praktische Stadium erreicht hat. Ich frage mich, welche Art von Anwendungsfall herauskommen wird (oder wird er überhaupt nicht verwendet?).