iOS9からGKSession over Bluetoothが無効に
ユーザの方からおんぷ先生アプリが接続できないという報告があり調べていたところ、iOS9からGameKitのGKSessionがBluetoothでは利用できなくなっていることがわかった。
Bluetooth over GKSession or MultipeerConnectivi… | Apple Developer Forums
もともと iOS7から deprecated にはなっていたのだが、iOS9からはGKSessionがサポートしていたBluetooth上で使えなくなっているとのこと。
しかし同じLAN内だとWi-Fiではつながってしまうので、発見が遅れてしまった。
かわりに MultipeerConnectivity を使うことが推奨されているのだが、MultipeerConnectivity FrameworkはiOS7からのサポートなので、iOS5までしかアップデートできないiPad1はサポート外となってしまう。
アプリの設定で GKSessionとMultipeerConnectivityを切り替えて両方サポートすることも考えたが、iPad1では今のアプリを使い続けることもできるし、もし要望があればGKSession版を別途公開もできるということで MultipeerConnectivity に切り替えることにした。
当初、MCBrowserViewController や MCAdvertiserAssistant を使って実装していたが、UIがローカライズされていなかったり、問題が起きたときに調査しづらいので、結局 MCNearbyServiceBrowser や MCNearbyServiceAdvertiser などの少しローレベルなクラスを使って実装した。
[iOS 7] P2P 通信を手軽に実現する Multipeer Connectivity Framework を使ってみる | Developers.IO → これはホストとクライアントの区別なく書かれているので、わかりづらいことが判明。
第 3 回・iOSでMultipeerConnectivityを実装してみよう! | ギャップロ → のほうがわかりやすい。
Nearby Networking with Multipeer Connectivity – WWDC 2013 – Videos – Apple Developer → 30分あたりから、MCNearbyServiceAdvertiser や MCNearbyServiceBrowserを使う説明が始まる。
また、上を目指すプログラマーのためのiPhoneアプリ開発テクニック iOS 7編は MultipeerConnectivity を20ページ以上使って説明している。
関連記事
-
-
EverLearn 1.8.0をリリースしました
以前から、iOSから英単語をPebbleに転送できるアプリを作っていましたが、今回はPebbleの画
-
-
[iPhone SDK] GPX Format で位置情報を出力
今公開している Log Locations は割り切りでエクスポート機能を入れていなかったのだけれど
-
-
Apple Special Event 2017
2017年は仕事で死んでいたので、Special Eventの記事を書けていなかった。記録
-
-
KickstarterでMiselu の iPad用キーボード C.24 に出資してみた
C.24 - The Music Keyboard for iPad by Miselu —
-
-
タッチ!にほんちずHD Ver.1.1.0 Submit
タッチ!にほんちずHDのバージョンアップ版(Ver.1.1.0)を App Store に提出しまし
-
-
Parse から Heroku, AWSへの移行ガイド
2017年1月28日にParseのサービスが終了するという衝撃的なニュース(Moving On)
-
-
[iPhone開発本] iPhoneではじめるOpenGL ESプログラミング
2010/07/13(火)発売。昨日書店で立ち読みしてみたら良さそうな本だった。 パンカクの本も良か
-
-
[iPhone SDK] Apple Push Notification を利用したアプリをサポートする Easy APNS
以前 apns-php を使ってApple Push Notification を実行する話を書いた
-
-
Everioで撮影した動画を共有する
毎年クリスマス近くになると、娘たちのバレエミニ発表会があるので、動画を撮って参加者に共有している。と
-
-
[iOS] INNER JOIN に失敗する
非常に面妖な状況でにわかには信じがたいのだが、iPhone 6 Plus だと問題なく動作する