Closed m-yoshimo closed 5 years ago
@m-yoshimo もともと Sora の HTTP API は「サーバ側」から叩かれる前提の機能となっていることもありクライアント SDK の範囲外となっております。
ただ、 HTTP クライアントから簡単に叩けますので、叩いてみてもらえればと思います。
@voluntas ご回答ありがとうございます。 大変申し訳ございません。質問内容に不備がございました。
こちら、PC (javascript)、iOS、Android の各クライアントがチャネルに参加している状態で、PC 側 Javascript から push API を叩いて任意の通知を行う予定です。
実際に動かして、javascript の HTTP クライアントから Push API を実行し、他の PC で signaling channel から push が受け取ることは確認できております。
Android ・iOS 共に取得が確認できておらず、Android/iOS でも取得可能なのか確認させて頂いた次第です。
Android の方は取得が確認できました。iOS はまだ確認できておりません。
@m-yoshimo iOS ではシグナリングの push メッセージをまだ実装していないのですが、 WebSocket のメッセージとして受信することは可能です。 WebSocketChannel のイベントハンドラを利用してシグナリングメッセージを受け取り、お手数ですが JSON 文字列を解析して push メッセージかどうかを判別してください。
以下、実装例です。エラー処理は省略しています。
// PeerChannel -> SignalingChannel -> WebSocketChannel のようにプロパティをたどり、
// メッセージ受信のイベントハンドラをセットします
peerChannel
.signalingChannel
.webSocketChannel
.handlers
.onMessageHandler = { (message: WebSocketMessage) -> Void in
switch message {
case .text(let body):
// メッセージを JSON 文字列として解析します
let data = body.data(using: String.Encoding.utf8)!
let json = try! JSONSerialization.jsonObject(with: data) as! [String: Any]
if json["type"]! as! String == "push" {
// push メッセージの操作
...
}
case .binary(_):
// Sora のシグナリングメッセージはテキストなので到達しません
break
}
}
push メッセージは次のリリースで対応する予定です。フィードバックありがとうございました。
@szktty ご回答ありがとうございます。 こちら試してみます。
また、次リリースの方、お待ちしております。
@szktty 上記の方法を試してみましたが、Push API を使って iOS のクライアントに push message を送ると、下記の Fatal Error でアプリが落ちてしまっています。
Thread 1: Fatal error: not supported decoding 'push'
下記の分岐によって強制的に shutdown されてしまうため、回答頂いた方法を使っても落ちます。 https://github.com/shiguredo/sora-ios-sdk/blob/master/Sora/SignalingMessage.swift#L499
現状、push API で push データを signaling channel に流すと iOS でクラッシュしてしまい、PC や Android でも push API 使った機能をリリースできない状態となってしまっております。
ios-sdk の次リリースはいつ頃実施される予定でしょうか?
@m-yoshimo こちらの問題は SDK 側のバグで、ご迷惑をおかけしてしまい申し訳ありません。
https://github.com/shiguredo/sora-ios-sdk/tree/feature/push こちらのブランチにて現在修正中です。明日中には修正版をご提供予定です。
おまたせしてしまい申し訳ありません。
@voluntas ありがとうございます! 非常に早くリリースして頂き、非常に助かります。 リリースされましたら、改めて確認します。
@m-yoshimo プッシュ API に対応した 2.2.1 をリリースしました。
プッシュ API で送信されたメッセージは、他のシグナリングメッセージと同様に SignalingChannel のイベントハンドラで取得できます。メッセージを表すオブジェクトは SignalingPushMessage です。
お手数をおかけしますが、確認のほどよろしくお願いいたします。
今回はご迷惑をおかけしてしまい申し訳ありませんでした。
@szktty ありがとうございます! 確認いたします。
@szktty こちら、新しいリリースで問題ないことが確認できました。 また、SignalingPushMessage を受け取れることも確認できました。 ご対応ありがとうございました。
@m-yoshimo 確認ありがとうございました。今回はご迷惑をおかけし申し訳ありませんでした。
マルチストリームで下記のプッシュ API を利用して、ライブビデオチャット中にチャネル参加者全員に任意の情報を通知したいと考えております。 https://sora.shiguredo.jp/doc/API.html#id10
しかし、下記の SDK の実装を見たところ、プッシュ API が iOS SDK では実装されていないように見受けられるのですが、こちら利用は可能でしょうか? https://github.com/shiguredo/sora-ios-sdk/blob/develop/Sora/SignalingMessage.swift#L175
未実装の場合、実装の予定はありますでしょうか?