メニューを閉じる

テクノデジタルグループ

メニューを開く

2016.12.26

プログラミング

1日でできるWebRTCネイティブプログラミング

坂東です。

WebRTC使ったAndroidアプリはWebView実装で、ただ標準WebViewは不安定なのでChromiumなCROSSWALK-PROJECTを使用しています。
ただライブラリのサイズが40MBもあったり、Bluetoothの接続で落ちるなど音声周りが不安定で、ネイティブ実装に置き換えることにしました。
でもどうやったら分からないので「WebRTC ネイティブ」でググり・・・

 

最初にたどり着いたのは「自分でライブラリをビルドする」やり方。

WebRTC Android向けネイティブビルド手順
http://qiita.com/natsuki_summer/items/f959aa78634af9fbdf1d

デモアプリ(AppRTCDemo)のAPKを作って動かすところまではいけました。
ただこれをAndroidStudioに取り込めなかったり、ライブラリの「jar」ファイルが出力されなかったり。
ネットで拾える情報通りにいかなくて、最新の情報が英語だらけで読めないので挫折。

 

もう少しググってたらAndroidStudioで読めるAppRTCDemoを発見。

Android AppRTC Demo of WebRTC project
https://github.com/njovy/AppRTCDemo

ただシグナリングサーバーが独自のものっぽいんですよね。
元々PeerJSで構築してるから、サーバーはPeerServerを使いたい。
でもPeerServerが内部でどんな処理してるかなんて知らない・・・
と、iOS向けだけど良いサンプルを見つけました。

PeerJSのObjectiveC版 PeerObjectiveC書いてみた
http://qiita.com/hiroeorz@github/items/70fcd51d0d8acc87d5c7

これを移植しはじめつつ、「でもAndroidで同様のサンプル無いのおかしいよな」とも思い。

 

teratailに質問したところ「SkyWayのSDKを使えばいいよ」と回答頂いたのでした。

ネイティブWebRTCからPeer Server(peer.js)経由でブラウザとの接続方法
https://teratail.com/questions/59638

SkyWayというのはNTTなんちゃらが提供するWebRTCサービスです。
SDKとサーバーが無料のトライアル提供との事で仕事で使うのは避けてた。
https://nttcom.github.io/skyway/

で、このSDK入れてさっくり実装できました。
PeerOptionのhost(シグナリングサーバー)とturn&config(TURNサーバー)の設定を自前のものにすればSkyWayサービスの登録キーも要らない。
type=Peer.PeerTypeEnum.PEERJSにするとシグナリングがえらく遅くなったから、ここはSKYWAYのままが良いみたい。

 

わたしは紆余曲折で1週間ぐらいハマったれど、SkyWayを使えば1日でできていたはずでした。
自前でPeerServerとTURN用意するのも面倒だからSkyWayはやく有料化しないかな。

おわり。


【記事への感想募集中!】

記事への感想・ご意見がありましたら、ぜひフォームからご投稿ください!
  • こんな記事が読んでみたい、こんなことが知りたい、調べてほしい!という意見も募集中!
  • いただいた感想は今後の記事に活かしたいと思います!

感想フォームはこちら


【テクノデジタルではエンジニア/デザイナーを積極採用中です!】

下記項目に1つでも当てはまる方は是非、詳細ページへ!
  • 自分でアプリを作ってみたい
  • ITで世の中にワクワクを生み出したい
  • 使いやすさ、デザインにこだわったWebサイトを開発したい

採用情報の詳細はこちら


Qangaroo(カンガルー)

  • 徹底した見やすさと優れた操作性で、テストの「見える化」を実現。
  • テストの進捗が見える。開発がスマートに進む。
  • クラウド型テスト管理ツール『Qangaroo(カンガルー)』

【テクノデジタルのインフラサービス】

当社では、多数のサービスの開発実績を活かし、
アプリケーションのパフォーマンスを最大限に引き出すインフラ設計・構築を行います。
AWSなどへのクラウド移行、既存インフラの監視・運用保守も承りますので、ぜひご相談ください。
詳細は下記ページをご覧ください。

https://www.tcdigital.jp/infrastructure/

最近の記事