[SWIFT] [Unity] Ich habe mit NWPathMonitor ein natives Plug-In UniNWPathMonitor erstellt

Unity hat eine Netzwerkverbindungsprüffunktion Application.internetReachability, aber ich habe es gewagt, ein natives Swift-Plug-In mit ** NWPathMonitor ** zu erstellen.

Verwenden Sie NWPathMonitor, der einfacher als Reachability ist, um den Netzwerkverbindungsstatus von iOS zu ermitteln. --Qiita Für die Verarbeitung rund um Swift habe ich hier auf den Artikel verwiesen.

Schnelle Seite

UniNWPathMonitor.swift


monitor.pathUpdateHandler = { path in
    if path.status == .satisfied {
        // connected
        self._onCallback("1")
    } else {
        // No connected
        self._onCallback("0")
    }
}

Wenn Sie über die NWPathMonitor-Instanz (Monitor) verbunden sind, wird "1" zurückgegeben, und wenn Sie nicht verbunden sind, wird "0" mit einem voreingestellten Rückruf zurückgegeben.

Objective-C ++ Seite

API_AVAILABLE(ios(12.0))
UniNWPathMonitor *_monitor;

Da diesmal iOS12 oder höher erforderlich ist, um NWPathMonitor zu verwenden, deklarieren Sie, dass iOS12 oder höher mit API_AVAILABLE erforderlich ist.

UniNWPathMonitorBridge.mm


[_monitor setCallbackOnCallback:^(NSString * value) {
    UnitySendMessage("UniNWPathMonitor", "Noti", [value UTF8String]);
}];

Legen Sie einen Rückruf für UniNWPathMonitor fest. Wenn der Rückruf zurückgegeben wird, verwenden Sie "UnitySendMessage", um die Verbindungsinformationen an die Unity-Seite zurückzugeben.

Eine Beschreibung von Objective-C ++ finden Sie in dem Artikel, den ich zuvor geschrieben habe. [Unity] Kürzeste Implementierung zum Ausführen von Swift von C # in Unity - Qiita

Einheitsseite

So wird es auf der Unity-Seite verwendet. Führen Sie einfach StartMonitor auf UniNWPathMonitor aus und legen Sie den Rückruf fest.

Sample.cs


void Start()
{
    UniNWPathMonitor.StartMonitor();
    UniNWPathMonitor.onChangeNetworkStatus += status =>
    {
        if (status == UniNWPathMonitor.NetworkStatus.satisfied)
            //Anschließen
        else
            //Schneiden
    };
}

anim.gif Klicken Sie hier für das, was ich tatsächlich gemacht habe. Wifi wird ein- und ausgeschaltet und Unity erhält den Rückruf. Es scheint eine leichte Verzögerung zu geben, bis der Rückruf nach dem Umschalten an Unity zurückgegeben wird.

Schließlich

Wie eingangs erwähnt, ist dieses Plug-In für Buchake Unity nicht erforderlich, da ** Application.internetReachability ** vorhanden ist. * Ich habe es geschafft, weil ich es schaffen wollte.

Für mich habe ich viel gelernt, indem ich es tatsächlich gemacht habe. Ich bin froh, dass ich die Gelegenheit hatte, etwas über Swift zu lernen, das ich gerade studiere, wie zum Beispiel die Swift-Callback-Grammatik, die zum ersten Mal herauskam, und wie man iOS 12 oder höher obligatorisch macht.


Alle Quellen werden unten hochgeladen. Bitte beziehen Sie sich auf sie. https://github.com/baobao/UniNWPathMonitor

Entwicklungsumgebung

Recommended Posts

[Unity] Ich habe mit NWPathMonitor ein natives Plug-In UniNWPathMonitor erstellt
Wie erstelle ich Unity Native Plugin (Android-Version)
Ich habe versucht, einen Server mit Netty zu implementieren
Ich habe versucht, mit AI "A3RT" eine Talk-App in Java zu erstellen.
Ich habe versucht, eine Anmeldefunktion mit Java zu erstellen
Ich habe einen RESAS-API-Client in Java erstellt
So erstellen Sie ein Jenkins-Plug-In
Ich habe versucht, eine einfache Anwendung mit Dockder + Rails Scaffold zu erstellen
Ich habe versucht, mithilfe von Routing-Verschachtelung eine beliebige URL zu erstellen
[Java] Ich habe versucht, mit der Grabmethode ein Labyrinth zu erstellen ♪
Ich habe versucht, mit Rails eine Gruppenfunktion (Bulletin Board) zu erstellen
[Rails] Implementierung einer mehrschichtigen Kategoriefunktion unter Verwendung der Abstammung "Ich habe versucht, ein Fenster mit Bootstrap 3 zu erstellen"
Ich habe versucht, ein übergeordnetes Wertklasseobjekt in Ruby zu erstellen
[iOS] Ich habe versucht, mit Swift eine insta-ähnliche Verarbeitungsanwendung zu erstellen
Ich habe versucht, eine Web-API zu erstellen, die mit Quarkus eine Verbindung zur Datenbank herstellt
Ich habe versucht, mit OpenTrip Planner und GTFS eine eigene Übertragungsanleitung zu erstellen
Java-Anfänger haben versucht, mit Spring Boot eine einfache Webanwendung zu erstellen
Ich habe einen Arbitrage-Transaktionsbot für virtuelle Währungen erstellt und versucht, Geld zu verdienen
Ich habe versucht, ein Beispielprogramm mit dem Problem des Datenbankspezialisten für domänengesteuertes Design zu erstellen
Ich habe versucht, eine Standardauthentifizierung mit Java durchzuführen
Java Ich habe versucht, einen einfachen Block zu brechen
Ich habe versucht, ein Personalmanagement-Tool zu entwickeln
Ich habe Java gemacht, um (a == 1 && a == 2 && a == 3) immer wahr zu machen
Ich habe versucht, eine Website für das Studium von DUO3.0 zu entwickeln.
Ich wollte (a == 1 && a == 2 && a == 3) in Java wahr machen
Ich habe versucht, eine LINE-Klon-App zu erstellen
Ich habe versucht, eine Website zu entwickeln, um Ausgaben zu erfassen.
Ich habe versucht, den Block mit Java zu brechen (1)
[LINE @] Ich habe versucht, einen westlichen Kalender für einen japanischen Kalender zu konvertieren. BOT [Messaging API]
Ich habe eine App für maschinelles Lernen mit Dash (+ Docker) Teil 3 ~ Übung ~ erstellt
Ich habe versucht, mit Javafx ein einfaches Spiel zu machen ① "Lass uns Glücksspiel finden" (unvollendet)
[Java] Ich habe versucht, über den Verbindungspool eine Verbindung mit Servlet (Tomcat) & MySQL & Java herzustellen
[Android] Ich habe mit ListView + Bottom Sheet einen Materiallistenbildschirm erstellt
[Kleine Geschichte] Ich habe versucht, die Java-ArrayList etwas komfortabler zu gestalten
Ich habe versucht, eine Datenbankverbindung in der Android-Entwicklung zu verwenden
Ich habe versucht, einen neuen Sortieralgorithmus zu erstellen, aber ich weiß nicht, ob er wirklich neu ist
Ich bin gestolpert, als ich versucht habe, neo4j in der jenv-Umgebung zu verwenden. Machen Sie sich also eine Notiz
Ich habe versucht, eine Ramen-Shop-Sharing-Website zu entwickeln.
Ich habe versucht, Gson zu benutzen
Ich habe versucht, SQS mit AWS Java SDK zu betreiben
Bei der Erstellung einer persönlichen App habe ich mich gefragt, ob ich sie mit haml erstellen soll
Ich habe versucht, mit Wercker ein Docker-Image zu erstellen und zu veröffentlichen, mit dem GlassFish 5 gestartet wird
Ich habe versucht, eine Clova-Fähigkeit in Java zu erstellen
Ich habe versucht, eine Nachrichtenfunktion der Rails Tutorial-Erweiterung (Teil 1) zu erstellen: Erstellen Sie ein Modell
Ich habe versucht, TestNG zu verwenden
Ich habe versucht, Log4j2 auf einem Java EE-Server zu verwenden
Ich habe versucht, Galasa zu benutzen
Ich habe versucht, ein Aktienchart mit Java (Jsoup) zu kratzen.
Ich habe versucht, eine Antwortfunktion für die Rails Tutorial-Erweiterung (Teil 3) zu erstellen: Ein Missverständnis der Spezifikationen wurde behoben
Ich habe versucht, die Beispielanwendung gemäß der Idee des Buches "Micro Service Architecture" in einen Mikrodienst zu verwandeln.
[Java] Ich habe versucht, ein Janken-Spiel zu erstellen, das Anfänger auf der Konsole ausführen können
Ich habe versucht, eine Nachrichtenfunktion für die Erweiterung Rails Tutorial (Teil 2) zu erstellen: Erstellen Sie einen Bildschirm zum Anzeigen
Ich habe versucht, innerhalb von 3 Monaten einen Antrag von unerfahren zu stellen
Ich habe versucht, mit Chocolatey eine Java8-Entwicklungsumgebung zu erstellen
Ich habe versucht, das GitHub-Repository als Bibliotheksserver zu verwenden