問題タブ [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.
ios - GKSession - アプリ間の切り替えとセッションの維持
2 つのアプリ間に GKSession があります。1 つはサーバーで、もう 1 つはクライアントです。サーバーは、urlscheme コマンドを使用して、クライアント アプリに別のアプリを起動させます。
私が望むのは、クライアント アプリがシャットダウンしたときにセッションが終了し、他のアプリが開き、新しいセッションを開始することです。
実際に何が起こっているのかは、私には少し謎です。基本的に、新しいアプリが開き、サーバーとの通信を開始します。かなりの数のパケットが 2 つの間で送受信されます... しかし、短い時間 (3 ~ 5 秒) の後、セッションで GKPeerStateDisconnected ケースが発生します。これにより、アプリケーション間のすべての通信が停止します。
私はもともとこれにピアピッカーを使用していましたが、うまく機能しました(手動でボタンを押す必要がたくさんあったことを除いて). 次に、ピア ピッカーを削除して、このプロセスを自動的に実行する必要があります。
ios - iOS GKSession ボイスチャットラグ
基本として GameKit 接続を使用して iOS アプリにボイス チャットを追加しましたが、送信 (Bluetooth 経由) の遅延は約 4 秒のようで、質問への返信を受け取るのに 8 秒かかります。
何がそんなに大きな遅延を引き起こしているのか完全にはわかりませんが、いくつかの容疑者がいます。
voiceChatService:sendData:toParticipantID:
まず、 fromのメソッドを使用してGKVoiceChatClient
いることに気付きましたvoiceChatService:sendRealTimeData:toParticipantID:
。RealTimeData
それでも、実装したとしても、代わりにメソッドのバージョンを使用する明白な方法はわかりません。どうすればそれを行うことができ、それが役立つ可能性がありますか?
また、データモードを変更しGKSendDataUnreliable
てGKSendDataReliable
、アプリが未確認のビットを再送信する可能性が高いため、同じことを2回聞くことがある. これにより、エコーのような効果は取り除かれましたが、ラグは改善されませんでした。
リアルタイムのパフォーマンスを向上させるために他に何ができますか?
ios - 特定の peerID への接続を終了するにはどうすればよいですか?
GKSession
PEERMODE で使用して、さまざまなデバイスとの複数の接続を確立しています。
しかし、次のような特定の peerID を持つ特定の接続を終了する方法がわかりません。
Classのリファレンスを読み、GKSession
Web で検索しましたが、有用な情報が見つかりませんでした。誰か助けてくれませんか?
iphone - GameKit WiFi はシミュレーターでは機能しますが、デバイスでは機能しません
GameKit を使用しているときに、説明のつかない問題に直面しました。WiFi ( picker.connectionTypesMask = GKPeerPickerConnectionTypeOnline;
) 経由で接続を確立すると、デバイスがお互いを認識できなくなります。シミュレーターがすべてを見ている間、彼らは何も見ていません。別のマシンで動作している任意のデバイスまたはシミュレーターを見ることができます。シミュレーターでは機能するのにデバイスでは機能しない理由を理解しようとして、数日間頭を悩ませてきました。誰でも私を助けてもらえますか?
これが私のセッションの作成方法です
iphone - なぜ GKSession は、デバイス上で実行しているときに Bluetooth を使用しようとし、シミュレーターでは使用しないのですか?
GKPeerPickerController を使用せずに GameKit 接続を実装しようとしています。必要なのは、BluetoothではなくWiFi接続を確立することです。
これは私がそれを行う方法です
私の問題は、デバイスが常に Bluetooth 経由で接続しようとすることです。少なくとも私はそう思うので、コンソールには常に次のように表示されます
BTM: BTServer へのアタッチ
Bluetoothをオフにしても、wifiではなく常にBluetoothを処理しようとします。さらに、Bluetooth がオンの場合、GKPeerPickerController を使用しないと、デバイスが互いに認識しません。また、シミュレーターは決して Bluetooth を探そうとせず、いつでも Wi-Fi 接続を確立して任意のデバイスを簡単に見つけることができます。GKSession に WiFi 接続を選択させるにはどうすればよいですか?
xcode - iOSゲームキット、カードゲームプレーヤー、およびGKVoiceChatService
iOS用のカードゲームに取り組んでいます。ゲームセンターの統合は私が傾倒したいものだと思いますが、カードゲームに関しては、それが個々のプレーヤーに何をもたらすのか正確にはわかりません。Appleのクラスリファレンスから、それGKPlayer
は私がやりたいことのようですが、私は自分のプレーヤークラスも持っているので、カードの手に対処するだけでよいと思います。私のPlayerクラスにGKPlayer
オブジェクトを含める必要があるのか、それともそれが間違った方法で行われるのか疑問に思っています。
ゲームセンターのボイスチャットについても疑問に思っています(これはカードゲームとはまったく関係がないように聞こえますが、我慢してください)。私はそれが実装されているのを見たことがないので、それがどのように機能するのか完全にはわかりません。基本的に私が必要とするのは、4〜10人のプレーヤーを接続できるようにし、単なるボイスチャットのようなものにすることです。避けたいものを画面に表示する必要があるようなもののようです。それはどのように機能しますか?
iphone - NSData に変換せずに NSString を NSMutableData に変換
私の問題は次のとおりです。NSString を NSMutableData オブジェクトにカプセル化したいと考えています。しかし、最初にNSDataにカプセル化せずに、他のアイテムと一緒にやりたいと思います。やっぱりバイトだけじゃないですか。
私の最終的な NSMutableData オブジェクトは次のようになります
はheader
char でstringLength
あり、unsigned short です。このようにパケットを作成します
次に、これを gkSession 経由で送信し、もう一方の端で文字列の長さを抽出してから、文字列自体を抽出します。
何らかの理由で、これは私に悪いメモリアクセスを与えています. それmyString.length
は私が期待することとまったく同じではないと思います。ヒントはありますか?前もって感謝します。
ios - 複数の情報を NSData にパックし、データを送信/受信/処理する方法は?
iOSで小さなカードゲームを作っています。ネットワーク データ転送を処理するために GameKit/GKsession を使用しています。
私の質問は、複数の情報を NSDataに「パック」して送信する方法です。サーバーが NSData を受信したら、それを解凍して情報を正しい方法で処理する方法。
たとえば、問題なく NSString を送受信できます。しかし、私のゲームでは、UIImage/NSString/NSArray/... など、送受信する必要があるデータ型が異なります。
サンプル プロジェクト GKTank を SDK で見つけました。しかし、私には理解するのが本当に難しいです。私の推測では、いくつかのデータ型が定義されています。
このメソッドでクライアントが送信しているデータの種類(NSString?UIImage?)をサーバーに知らせる方法を教えてください:
ios - GKSession:文字列の配列を送信する
セッション内の1つのピアが、接続されている別のピアに文字列の配列を送信するようにします。そのような配列をNSDataに変換する方法はありますか、それとも文字列を次々に送信する必要がありますか?どうもありがとう。
ios - GKPeerPicker を使用せずに GKSession を介して電話間でデータを転送する方法
GKSession を使用して 2 台以上の電話間でデータを転送するアプリを作成しようとしています。問題は、2 つのオプションがあることです。
まず、 GKPeerPickerを使用します。しかし、ここでは、独自のWIFI インターフェイスを実装する必要がある時点で行き詰まります。
2 番目:この例のように、GKPeerPicker をスキップして、自分ですべてを実行します。ただし、アプリの開発ドキュメントには、GKPeerPicker を使用せずにデータを送受信する方法についての説明はありません (Web でその例を見つけることもできませんでした)。