Comment distinguer l'hôte du client en bluetooth iPhone avec GameKit
-
10-07-2019 - |
Question
J'ai créé un jeu multijoueur à l'aide de la structure GameKit, qui permet à deux iPhones / iPod de se connecter via Bluetooth et de jouer.
Je réfléchis à un moyen de choisir quel appareil pourra jouer en premier. La solution logique est donc de choisir l'hôte de la connexion. Y a-t-il même un serveur et un client dans GKSession? Sont-ils tous des pairs? Quelle route dois-je emprunter pour obtenir ce dont j'ai besoin?
La solution
En gros, il vous appartient de configurer votre session à votre guise.
Dans la documentation Apple:
Les sessions découvrent d’autres pairs sur le réseau basé sur un mode de session qui est défini lorsque la session est initialisé. Votre application peut configurer la session pour être un serveur, qui annonce un type de service sur le réseau; un client qui recherche serveurs de publicité; ou un pair, qui annonce comme un serveur et recherche comme un client simultanément.
Une copie de votre demande faisant office de Le serveur initialise la session en appel initWithSessionID: displayName: sessionMode: avec un mode de session soit GKSessionModeServer ou GKSessionModePeer. Après le l’application configure la session, elle annonce le service en définissant la La propriété isAvailable de la session est associée à YES.
Une copie de votre demande faisant office de le client initialise la session en appel initWithSessionID: displayName: sessionMode: avec un mode de session soit GKSessionModeClient ou GKSessionModePeer. Après avoir configuré la session, votre application cherche le réseau pour les serveurs de publicité par réglage de la session est disponible propriété à OUI. Si la session est configuré avec le GKSessionModePeer mode de session, il se annonce aussi en tant que serveur, comme décrit ci-dessus.
Par conséquent, si vous utilisez GKSessionModePeer pour initialiser la session, vous avez des pairs (agissant à la fois en tant que serveur et client). Si vous souhaitez distinguer un serveur de ses clients, initialisez-le avec GKSessionModeServer.
Cordialement.