web-dev-qa-db-fra.com

Transférer des données entre iOS et Android via Bluetooth?

J'ai lu comment transférer des données entre appareils iOS via Bluetooth à l'aide de GameKit. Je ne suis pas en train d'écrire un jeu en tant que tel, mais j'ai besoin de transférer une petite quantité de données binaires entre deux appareils. Entre deux appareils iOS, c'est assez simple. Cependant, je me demandais s’il était possible de transférer des données entre un appareil iOS et un appareil Android via le même mécanisme.

Quelqu'un at-il rencontré de la documentation/tutoriel qui expliquerait comment faire cela? Est-ce même techniquement possible? Ou bien Apple a-t-il mis en place une sorte de restriction qui empêcherait cela?

L'autre option que j'ai découverte est Bonjour via Bluetooth. Serait-ce une option plus appropriée pour ce type d'opération?

58
Shadowman

Cette question a été posée à plusieurs reprises sur ce site et la réponse définitive est la suivante: NON, vous ne pouvez pas connecter un téléphone Android à un iPhone via Bluetooth , et YES Apple a des restrictions qui l’empêchent.

Quelques alternatives possibles:

  1. Bonjour via WiFi, comme vous l'avez mentionné. Cependant, je n'ai pas pu trouver un tutoriel complet pour cela.
  2. Certains services de synchronisation basés sur Internet, tels que Dropbox, Google Drive et Amazon S3. Ceux-ci ont généralement des bibliothèques pour plusieurs plates-formes.
  3. Communication TCP/IP directe sur des sockets. ( Comment écrire un petit serveur (socket) sous iOS )
  4. Bluetooth Low Energy sera possible une fois que les problèmes Android seront résolus ( Communication entre iOS et Android avec Bluetooth LE )

Alternative la plus cool : utilisez le Bump API . Il a iOS et Android support et vraiment facile à intégrer. Pour les petites charges utiles, cela peut être la solution la plus pratique.

Détails sur la raison pour laquelle vous ne pouvez pas connecter un périphérique arbitraire à l'iPhone . iOS n'autorise l'utilisation que de certains profils Bluetooth sans la certification MFi (Made For iPhone) ( HPF, A2DP, MAP ... ). Le profil du port série dont vous auriez besoin pour mettre en œuvre la communication est lié à l’appartenance MFi. L'adhésion à ce programme vous fournit le module d'authentification MFi à ajouter à votre matériel et prend en charge l'authentification de l'appareil auprès de l'iPhone. Android les téléphones n'ayant pas ce module, la procédure d'authentification échouera même si la connexion physique peut être établie. La communication d'iPhone à iPhone est possible car les deux extrémités peuvent s'authentifier.

81
allprog

Peut-être un peu en retard, mais les technologies ont évolué depuis, donc il y a certainement de nouvelles informations autour desquelles jette un nouvel éclairage sur le sujet ...

Comme iOS n’a pas encore ouvert d’API pour la connectivité Wi-Fi Direct et Multipeer, j’estime que la meilleure façon de procéder consiste à utiliser BLE, qui est pris en charge par les deux plates-formes (certaines meilleures que d’autres).

Sur iOS, un appareil peut jouer simultanément le rôle de périphérique BLE central et de périphérique BLE. Sous Android, la situation est plus complexe car tous les périphériques ne prennent pas en charge l'état de périphérique BLE. De plus, la pile Android BLE est très instable (à ce jour).

Si votre cas d'utilisation est axé sur les fonctionnalités, je vous conseillerais de consulter les frameworks et les bibliothèques capables de réaliser une communication multiplate-forme pour vous, sans que vous ayez besoin de la construire à partir de zéro.

Par exemple: http://p2pkit.io ou google à proximité

Disclaimer: Je travaille pour Uepaa et développe p2pkit.io pour Android et iOS.

2
p2pkit

Vous pouvez utiliser p2pkit, ou la solution gratuite sur laquelle elle est basée: https://github.com/GitGarage . Ne fonctionne pas très bien, et c’est sûr, mais c’est gratuit. Fonctionne pour de petites quantités de transfert de données pour le moment.

2
omikes