メニューを閉じる

テクノデジタルグループ

メニューを開く

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(カンガルー)』
https://qangaroo.jp/

最近の記事

SNS共有