問題タブ [gksession]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
iphone - 1 つのデバイスがゲームキットを介して別のデバイスからの接続要求を受け入れると、両方のデバイスでデータを送受信する
2 つ以上のデバイスを接続するために、プロジェクトでゲームキット フレームワークを使用しています。あるデバイスがデバイス A と B のような別のデバイスを選択したときに、A が B を選択すると、B は接続の承認または拒否に関するダイアログを取得します。次に、B が受け入れます。私がしなければならないことは、両方にデータを送信することです。デバイス、B から A へ、および A から B へ。
このために私がしたことは: -
問題は、1 つの iPad と別の iPhone を使用すると、この場合、デバイス A でメソッドが呼び出されますが、ダイアログを取得して受け入れボタンを押すデバイス B では、このメソッドは呼び出されません。
両方の iPad を使用している場合、この場合は正常に動作しています。
ここで立ち往生しているので助けてください。どんな助けでも大歓迎です!
ios - iPhone ピア 2 ピア接続 ..複数のデバイスに接続する方法はありますか?
ピアツーピア接続アプリケーションを実装しようとしています。2つ以上のデバイスを相互に接続したい.デバイスのペアごとに個別のセッションを作成する方法 新しいGameKitフレームワークを使用して複数のデバイスに接続することは可能ですか?
iphone - ローカル Wi-Fi 経由でファイル (.mp3) をブロードキャストするには? 両方のデバイスがファイルを持っているときに再生を同期しますか?
私の質問が非常に大きいことはわかっています。しかし、誰かが私にどの方向に行くべきかを教えてくれたら。gameKit(GKsession/GKPeerPickerController) でこれを実装できることはわかっていますが、これら 2 つの動作を正しく理解することもできません。データを受信した後にそれらを同期するにはどうすればよいでしょうか。
みんなありがとう
iphone - GKSessionピアの切断により、他のピアが切断されたように見えます
私のアプリはGKSessionModePeerでGKSessionを使用しています。これは長時間実行されるアプリであり、ユーザーはバックグラウンドに戻って後で戻ることができるはずなので、任意に接続および切断するピアを処理する必要があります。これはほとんどの場合正常に機能します。ただし、ピアが切断されると、実際に切断されたデバイスだけでなく、実際に接続されている他のデバイスについても、didChangeState:GKPeerStateDisconnectedで他のデバイスに通知される場合があります。
以下のコードと4つのデバイス(すべてiOS 5)を使用して、この動作を再現できます。すべてが期待どおりに進むと、デバイスAがアプリを終了すると、他のすべてのデバイスに通知が届き、それらのデバイスのログ出力は次のようになります。
Service: didChangeState: peer A disconnected (12345)
ただし、しばらくして、デバイスが切断されると(たとえば、もう一度A)、他のデバイスは、切断されなかったデバイスに対して追加のコールバックを受け取ります。たとえば、デバイスCは次のようになります。
Service: didChangeState: peer A disconnected (...) // expected
Service: didChangeState: peer B disconnected (...) // never disconnected
同じ頃、切断しているデバイスのログにこの種のメッセージが表示されることがありますが、実際に関連しているかどうかはわかりません。
dnssd_clientstub DNSServiceRefDeallocate called with NULL DNSServiceRef
および/または
dnssd_clientstub DNSServiceProcessResult called with DNSServiceRef with no ProcessReply function
これが発生すると、GKSessionは悪い状態にあるように見え、接続と切断を正しく処理できなくなります。良好な状態に戻すには、すべてのデバイスでアプリを強制終了し、少し待ってから最初からやり直す必要があります。
バックグラウンドに移動するときにGKSessionを処理するさまざまな方法を試しました(available = NOに設定し、切断せず、何もしません)。どれもうまくいきませんでした。
他の誰かがこの振る舞いに遭遇しましたか(そしてそれを解決しましたか)?
AppDelegateでの単純な再現ケース(アークを使用):
ios - ゲームキットの待ち時間
GKSessionsで次の問題が発生します。クライアント/サーバーアプリケーションでデータを送信するときに、データの送信に大きな遅延が発生する場合があります(3〜4秒、場合によっては最大10秒)。
サーバーが遅延中にたとえば10パケットを送信した場合、それらの10パケットはクライアントで一度に受信されます。奇妙なことに、サーバーは遅延中にクライアントからパケットを受信します。
この遅延はWiFiネットワークではさらに悪化するようですが、Bluetoothネットワークでも発生します。
ゲームキットを使用しているときに、他の誰かがそのような遅延スパイクに遭遇しましたか?この問題の原因は何でしょうか?
objective-c - アプリは引き続き動作しますが、削除したいという少し迷惑な警告
Bluetooth通信をテストするアプリを試してみました。ある iDevice から別の iDevice にテキスト形式でメッセージを送信するだけのシンプルなアプリです。当初、このアプリには約 6 つの警告がありましたが、2 つを除いてすべて修正しました。それらは同じですが、異なるデリゲートを扱います。1 つは GKPeerPickerControllerDelegate 用で、もう 1 つは GKSessionDelegate 用です。次のように入力すると、 Picker エラーが picker という名前の GKPeerPickerController に対するものであるとします (より完全な例を次に示します)。
コンパイラは次のように述べています。
'*const___strong' を互換性のない型 'id' のパラメーターに渡します。
GKSession の名前付きセッションの場合、次のように入力します。
コンパイラに次のように言わせます。
'*const___strong' を互換性のない型 'id' のパラメーターに送信しています。
これらは、送信するボタンと peerPickerController のみに表示されます。これらの警告がアプリの機能を妨げないことはわかっていますが、これを Xcode 4.2 用に完全に更新したいと考えています。このアプリは、もともと iOS 3.0 が新しくなったときに Xcode 用に作成されました。はい、コードを書いたり練習したりすることに関しては、私は少しうるさいです。可能な限り、エラーや警告を含めてはなりません。
これらは、警告が発生するコード ブロックです。
編集:
ヘッダーにはこれがあります:
}
ios - GKSession を使用してマスター クライアント モデルを実装する方法は?
現在、GKSession を使用しています。2台以上のiPad同士を接続したい。
Bluetooth GKSession PeerPickerController を使用して、そのうちの 2 つを接続できます。私はこのことにかなり慣れていません。
そのようなモデルを実装するチュートリアルへのポインタまたはリンクを教えてもらえますか?
ios - GKSession モード ピア: ボタンや確認なしで 2 つのピアを自動的に接続する方法は?
GKPeerPickerController を使用せず、両側の「接続ボタン」を押さずに、GKSession を使用して 2 台の iPhone 間の Bluetooth 接続を確立したいと考えています。
私は次のコードを使用しています:
アプリケーションが両側で開始されると、 - (void)session:(GKSession *)session peer:(NSString *)peerID didChangeState:(GKPeerConnectionState)stateが両側で呼び出され、状態は「GKPeerStateAvailable」になります。
「クラシック」アプリでは、接続を求めるポップアップが両側に表示され、ほとんどの場合、両方の「ユーザー」が同時に接続ボタンをクリックすることはありません。
「自動接続」が必要な場合は、一方の側でのみセッションを開始するメカニズムが必要です。このメカニズムがないと、2 つのセッションが開始されてエラーが発生するためです。
任意のアイデア/ヘルプ?
ios - GKSession - セッションを強制終了して更新する
ピアの新しい表示名を読み取るには、GKSession を強制終了して更新する必要があります。nil に設定して新たに開始しても機能しません。以下のコードでは、使用可能なピアを表示するfor ループの NSLog は呼び出されません (エラー メッセージはありません)。
currentSession を nil に設定して新たに開始することの何が問題になっていますか? GKSession を更新する別の方法をご存知でしょうか? よろしくお願いします。
ios - GKSession を使用したクライアントおよびサーバーの両方として
2 つの GKSession を 1 つをクライアントとして、もう 1 つをサーバーとして同時に実装できますか? WiFi と Bluetooth を使用してこの接続を実装する際に問題や制限はありますか? ありがとう!