Unity a une fonction de vérification de connexion réseau ʻApplication.internetReachability`, mais j'ai osé créer un plug-in Swift natif en utilisant ** NWPathMonitor **.
Utilisez NWPathMonitor, qui est plus simple que l'accessibilité, pour détecter l'état de la connexion réseau d'iOS. --Qiita Pour le traitement autour de Swift, je me suis référé à l'article ici.
UniNWPathMonitor.swift
monitor.pathUpdateHandler = { path in
if path.status == .satisfied {
// connected
self._onCallback("1")
} else {
// No connected
self._onCallback("0")
}
}
Si vous êtes connecté en utilisant l'instance NWPathMonitor (moniteur), il sera renvoyé avec «" 1 "», et s'il est déconnecté, il sera renvoyé avec un rappel prédéfini.
API_AVAILABLE(ios(12.0))
UniNWPathMonitor *_monitor;
Étant donné qu'iOS12 ou version ultérieure est nécessaire pour utiliser NWPathMonitor cette fois, déclarez que iOS12 ou version ultérieure est nécessaire avec ʻAPI_AVAILABLE`.
UniNWPathMonitorBridge.mm
[_monitor setCallbackOnCallback:^(NSString * value) {
UnitySendMessage("UniNWPathMonitor", "Noti", [value UTF8String]);
}];
Définissez un rappel pour UniNWPathMonitor. Lorsque le rappel est renvoyé, utilisez ʻUnitySendMessage` pour renvoyer les informations de connexion du côté Unity.
Pour la description d'Objective-C ++, veuillez vous référer à l'article ici que j'ai écrit plus tôt. [Unity] Implémentation la plus courte pour exécuter Swift à partir de C # dans Unity récent --Qiita
C'est ainsi qu'il est utilisé du côté de Unity. Exécutez simplement StartMonitor sur UniNWPathMonitor et définissez le rappel.
Sample.cs
void Start()
{
UniNWPathMonitor.StartMonitor();
UniNWPathMonitor.onChangeNetworkStatus += status =>
{
if (status == UniNWPathMonitor.NetworkStatus.satisfied)
//de liaison
else
//Coupe
};
}
Cliquez ici pour voir ce que j'ai réellement fait. J'active et éteins le Wifi et je reçois le rappel du côté Unity. Il semble y avoir un léger décalage jusqu'à ce que le rappel soit renvoyé à Unity après la commutation.
Comme je l'ai mentionné au début, ce plug-in n'est pas requis pour Buchake Unity car ** Application.internetReachability ** existe. * Je l'ai fait parce que je voulais le faire.
Pour moi, j'ai beaucoup appris en le réalisant. Je suis heureux d'avoir eu l'occasion d'en apprendre davantage sur Swift, que j'étudie actuellement, comme la grammaire de rappel Swift qui est sortie pour la première fois et comment rendre iOS 12 ou une version ultérieure obligatoire.
Toutes les sources sont téléchargées ci-dessous, veuillez donc vous y référer. https://github.com/baobao/UniNWPathMonitor
Recommended Posts