[SWIFT] Utilisation du réseau local avec iOS 14

introduction

L'autorisation de l'utilisateur est désormais requise pour communiquer depuis iOS 14 vers le réseau local. Par exemple, si vous utilisez la diffusion ou la multidiffusion pour détecter automatiquement les périphériques de votre réseau local, la boîte de dialogue d'alerte suivante sera affichée à l'utilisateur. Sous iOS14, je pensais que je venais de demander l'autorisation à l'utilisateur, mais selon la fonction, il est nécessaire de changer l'implémentation ou de l'appliquer à Apple. Pour plus de détails, reportez-vous à l'URL indiquée dans les références. LocalNetworkPermission.png

Fonctionnalités nécessitant une autorisation pour la communication sur le réseau local dans iOS14

["Support local network privacy in your app (WWDC2020)"] Dans (https://developer.apple.com/videos/play/wwdc2020/10110/), si l'utilisateur a l'autorisation de communiquer avec le réseau local, cela est expliqué comme suit.

Nécessite l'autorisation de l'utilisateur

--Communiquer avec l'hôte du réseau local via TCP / UDP --Recherche et publicité sur Bonjour

NeedLocalNetworkPermission.png

Ce que le développeur doit changer

Lorsque vous utilisez un réseau local, ce dont vous avez besoin en tant que développeur est le suivant.

1. Ajoutez une description pour la boîte de dialogue d'autorisation du réseau local

La boîte de dialogue suivante s'affiche lorsque l'application requiert une autorisation pour le réseau local. Si rien n'est défini, vous verrez une description standard de la figure, telle que ʻIntroduction. Vous pouvez ajouter un texte descriptif à cette boîte de dialogue en mettant un texte descriptif dans ʻInfo.plist. Vous pouvez expliquer à l'utilisateur pourquoi l'application en a besoin.

LocalNetworkPermission説明文.png

Plus précisément, éditez ʻInfo.plist dans Xcode et la valeur de Confidentialité - Description de l'utilisation du réseau local` ajoutera un texte descriptif. Info.plist.png

Le fichier de ʻInfo.plist` est le suivant.

Info.plist


<key>NSLocalNetworkUsageDescription</key>
 <string>Veuillez décrire dans cette partie.</string>

2. Ajout d'un service de recherche par Bonjour

Lors de la recherche d'un service dans Bonjour, saisissez le nom du service à rechercher dans ʻInfo.plist. Les services répertoriés ici seront détectables dans Bonjour. Modifiez ʻInfo.plist dans Xcode et ajoutez le service à rechercher dans les services Bonjour. Puisqu'il s'agit d'un tableau, vous pouvez en lister plusieurs.

Bonjour.png

Info.plist


<key>NSBonjourServices</key>
<array>
 <string>_ipp._tcp.</string>
 <string>_printer._tcp.</string>
</array>

3. Lorsqu'une communication de diffusion / multidiffusion est requise

Application d'autorisation de mise en réseau multicast

Si vous avez besoin d'une communication de diffusion / multidiffusion autre que celle ci-dessus, vous devez vous adresser à Apple pour chaque identifiant d'application. Plus précisément, [«Demande d’autorisation de mise en réseau multicast»] Vous pouvez postuler à partir de (https://developer.apple.com/contact/request/networking-multicast). Les simulateurs iOS et les simulateurs iPad OS peuvent communiquer sans cette autorisation. Cependant, sur la machine réelle, la communication n'est pas possible sans cette autorisation. Si vous pouvez communiquer avec le simulateur mais pas avec l'appareil réel, veuillez vérifier si cette autorisation est requise.

Méthode de paramétrage après l'acquisition du droit d'accès au réseau de multidiffusion

Après avoir obtenu le «droit d'accès au réseau multicast» d'Apple, certains paramètres sont nécessaires. J'écrirai la méthode de réglage.

Ajout de capacités de l'application cible (Apple Developer)

Sélectionnez l'ID d'application cible. Plus précisément, sélectionnez l'application cible parmi les «Identificateurs» des «Certificats, identificateurs et profils» d'Apple Developer dans la figure ci-dessous. L'URL actuelle est https://developer.apple.com/account/resources/identifiers/list.

Identifiers.png

Après avoir sélectionné l'ID d'application cible, vous pouvez modifier les paramètres de l'application avec ʻEdit your App ID Configuration`. Pour les applications qui ont acquis le droit au «Multicast Networking Entitlement», vous pourrez sélectionner «Additional Capabilities» comme indiqué dans la figure ci-dessous, alors sélectionnez «Multicast Networking».

Capability.png

Ajout de capacités de l'application cible (Apple Developer)

Sélectionnez le fichier avec ʻapp name.entitlementsdans Xcode. Mettezcom.apple.developer.networking.multicast dans cléet1 dans valeur` comme indiqué dans la figure ci-dessous. Ceci termine les paramètres de capacité.

entitlements.png

C'est la méthode de description dans le fichier suivant.

nom de l'application.entitlements


<key>com.apple.developer.networking.multicast</key>
<true/>

Références

Recommended Posts

Utilisation du réseau local avec iOS 14
Exécutez un modèle simple réalisé avec Keras sur iOS à l'aide de CoreML
Création d'un flux de test sur CircleCI à l'aide de Jib
Créez un environnement de développement Java à l'aide de jenv sur votre Mac
Utiliser JDBC sous Linux
Créer un référentiel local
J'ai essayé d'utiliser Log4j2 sur un serveur Java EE
Création d'un hôte Docker sur AWS à l'aide de Docker Machine (mémorandum personnel)
Tracez une ligne sur un document PDF existant à l'aide de PDFBox
[Swift 5] Sélectionnez une date avec le sélecteur UIDate sur iOS14
Essayez de lancer un serveur WebAP sur le micro à l'aide d'Helidon
Essayez Hello World en utilisant Java brut sur le conteneur Docker
Créer un calendrier avec Ruby
[IOS] canOpenURL devient faux dans iOS14
Créer une loterie avec Ruby
Publier des vidéos sur les rails
Développement ATDD sur iOS (édition de base)
Faire un diamant en utilisant Java
Points à prendre en compte lors de la mise à niveau de Tomcat sur un système Web utilisant Oracle
NLP4J [001a] Analyse morphologique avec Java (utilisant l'analyse morphologique japonaise de Yahoo! Developer Network)
Configurez facilement un serveur Jenkins sur AWS à l'aide de l'AMI de Bitnami