[Q&A]iOSでのPEER_EVENT_CALLイベント時に接続確認のダイアログを出すと接続できない

280 views
Skip to first unread message

kimu...@gmail.com

unread,
Dec 1, 2015, 11:27:58 PM12/1/15
to SkyWay Technical Forum

Swiftにて、ビデオチャットアプリの開発を行っています。

iOSのサンプルをSwiftに書き換えて検証を行っているのですが、

PEER_EVENT_CALLイベント時に、UIAlertControllerにて、接続確認ダイアログを出すと、

ビデオチャットの接続が行われず困っております。


具体的には以下のようなコードを書いております。


func _setCallbacks(peer: SKWPeer?) {

~省略~

    peer?.on(.PEER_EVENT_CALL, callback: {obj in

        print("peer call")

        if let connection = obj as? SKWMediaConnection {


            let alertController = UIAlertController(

                title: "接続許可"

                , message: "\(connection.peer)から会話の要求がありました。\n会話を開始しますか?"

                , preferredStyle: .Alert)


            let cancelAction = UIAlertAction(title: "会話しない", style: .Cancel) {

                action in

                self.closedMedia()

            }


            let otherAction = UIAlertAction(title: "会話する", style: .Default) {

                action in

                self._mediaConnection = connection

                self._setMediaCallbacks(self._mediaConnection)

                self._mediaConnection?.answer(self._msLocal)

            }


            alertController.addAction(cancelAction)

            alertController.addAction(otherAction)

            self.presentViewController(alertController, animated: true, completion: nil)

        }

    })

~省略~

}


上記のようなコードにて、

相手からの接続があった際に、ダイアログの表示とほぼ同時に、

以下のようなログが出力されていて、

「会話する」ボタンを押しても接続できません。


peer call

2015-12-02 11:57:34.329 VideochatWork[2139:707814] <CATransformLayer: 0x1516027d0> - changing property masksToBounds in transform-only layer, will have no effect

2015-12-02 11:57:34.330 VideochatWork[2139:707814] <CATransformLayer: 0x151607450> - changing property masksToBounds in transform-only layer, will have no effect

2015-12-02 11:57:34.330 VideochatWork[2139:707814] <CATransformLayer: 0x14ffcd400> - changing property masksToBounds in transform-only layer, will have no effect



ダイアログを出さずに、otherAction内に書かれている処理を直接呼びf出すと、

正常に接続が行われます。

iOS開発に慣れていないということもありますが、

いったい何が原因なのかわからず、途方に暮れております。


解決方法などのアドバイスをいただければ幸いです。


どうぞよろしくお願いいたします。

Hiroki Kato

unread,
Dec 8, 2015, 1:11:53 AM12/8/15
to SkyWay Technical Forum
お世話になっております。

SkyWay開発チームの加藤です。

ご迷惑おかけしております。
本件、我々の環境においても事象が確認できました。
Obj-Cでも同様にビデオチャットでの接続ができませんでした。
offerを受け取っているのですが、answerが返せていないようです。

また、我々の検証環境ではご指摘頂いたログメッセージは発生しませんでした。
メッセージ内容からも、おそらく接続できないことは別の要因かと推測しております。

> 2015-12-02 11:57:34.329 VideochatWork[2139:707814] <CATransformLayer: 0x1516027d0> - changing property masksToBounds in transform-only layer, will have no effect



引き続き調査いたしますので少々お時間いただけますでしょうか。
ご迷惑おかけして申し訳ございません。

よろしくお願いします。


UIAlertController

2015年12月2日水曜日 13時27分58秒 UTC+9 kimu...@gmail.com:

kimu...@gmail.com

unread,
Dec 8, 2015, 1:45:10 AM12/8/15
to SkyWay Technical Forum
SkyWay開発チーム
加藤 様

お世話になっております。
ご回答ありがとうございます。

引き続き、どうぞよろしくお願いいたします。

菊池文矩

unread,
Feb 6, 2016, 11:44:41 AM2/6/16
to SkyWay Technical Forum
おなじ、症状で困っているのですが
確認ダイアログの代替策などありますでしょうか

2015年12月8日火曜日 15時11分53秒 UTC+9 Hiroki Kato:

Hiroki Kato

unread,
Feb 7, 2016, 8:57:40 AM2/7/16
to SkyWay Technical Forum
菊池さま

お世話になっております。
SkyWay開発チームの加藤です。


代替策としましては、別の方法で着信を通知する方法があるかと思います。

一例としましては、
1.データコネクション張る
2.発信側が電話をかけたいという情報を送る
3.受信側でポップアップを表示する。
4.受信側がOKを押した場合は、OKという旨の情報を送る
5.発信側はOKというメッセージを受けて、メディア接続(call)を試みる

といった手段です。
データコネクションでなくとも、サーバ経由のWebSocketやプッシュ通知などでも代用可能です。

宜しくお願いします。

2016年2月7日日曜日 1時44分41秒 UTC+9 菊池文矩:

菊池文矩

unread,
Feb 8, 2016, 11:44:59 AM2/8/16
to SkyWay Technical Forum
加藤様

対応ありがとうございます。
データコネクションを最初に張る方法で
実現することができました。

ありがとうございます。

2016年2月7日日曜日 22時57分40秒 UTC+9 Hiroki Kato:
Reply all
Reply to author
Forward
0 new messages