LoginSignup
23

More than 5 years have passed since last update.

iPhone 5にPJSIPを組み込む

Last updated at Posted at 2012-12-14

一度記事を消してしまったので2度目の文章作成です。。。
あんまりObjective-Cらしくない内容ですが、ご愛嬌。

PJSIPとは

オープンソースのSipStackです。
SIPについてはぐぐってくれると嬉しいんですが、VoIPとかあの辺の話ですね。
詳しくはぐぐって!
超超ざっくり言うとこれを組み込んだらIP電話が使えるよって話です。

今回の流れ

iPhone5用にコンパイルして、Xcodeに組み込むまでをやってみようかと思います。
組み込んだ後のコーディングはまた機会があれば紹介しようと思います。
そんなにしっかりコード書いたことないけど。

というわけで、さっそく本題に移りましょう!

環境

  • Mac OS X 10.7.5
  • Xcode 4.5.2

PJSIPをダウンロードする

Getting Started: Building for Apple iPhone, iPad and iPod Touch
ここを参考にして進めます。

まずはソースコードを落とします。
ターミナルを起動して以下を実行します。
(zipもあるようですが今回はsvnで)

svn co http://svn.pjsip.org/repos/pjproject/trunk/ pjsip

PJSIPをコンパイルする

makeとかよく知らない自分にはここが一番の難所でした。
色々とファイル編集してからmakeするだけなんですけどね。。。

# Checkoutしたディレクトリへ移動
cd pjsip

# Vimでファイル編集
vim pjlib/include/pj/config_site.h

内容は以下をコピペ

config_site.h
#define PJ_CONFIG_IPHONE 1
#include <pj/config_site_sample.h>

次にconfigureをいじります。
iPhone5用にコンパイルするので、armv7となっているところをarmv7sに修正します。
「armv7」と検索したら1箇所だけヒットしたので、そこを書き換えただけです。

vim configure-iphone
       #export ARCH="-arch armv7"
       export ARCH="-arch armv7s"

修正できたら以下を実行します。

./configure-iphone

エラーがでなければmakeします。

make dep && make clean && make

エラーがでなければOK!

Xcodeへ組み込む

Xcodeで新規にプロジェクトを作成します。
以下のディレクトリをプロジェクトに追加します。

  • pjsip/
    • pjlib/
      • include/
      • lib/
    • pjlib-util/
      • include/
      • lib/
    • pjmedia/
      • include/
      • lib/
    • pjnath/
      • include/
      • lib/
    • pjsip/
      • include/
      • lib/
    • third_party/
      • include/
      • lib/

pjsip4iPhone5

上のディレクトリ全てを以下の追加します。

  • Header Search Paths

Header Search Paths

  • Library Search Paths

Library Search Paths

と思ってたら、プロジェクトにファイルを追加した段階でLibrary Search Pathsも追加されてました。
ライブラリの追加もできてました。
Build PhasesLink Binary With Libraries から確認できます。

Link Binary With Libraries

あとはiPhone5を繋いで、
AppDelegate.mあたりに以下を追加してビルドしてみましょう。

#include <pjsua-lib/pjsua.h>

これでエラーなく実機でビルドできればOK!
iPhone5用にコンパイルしてるので、simulatorでは動きません。
エラー出て怒られると思います。

最後に

実装の際はこのサンプルを見ながら書いてみると良いでしょう。
Samples: Simple PJSUA

APIはここを参照。
PJSUA API - High Level Softphone API

言うのが遅くなりましたが、もちろん電話番号が必要です。
iptelなら無料で電話番号を発行してもらえます。
iptel.org

探せば他にもたくさんあるはずなので探してみては如何でしょう。

んで

ぼくはCもSIPも詳しくないので質問されてもわかりません!
むしろ教えて下さい。

ということで、お疲れ様でございました。

参考にしたサイト

PJSIPをXcodeに組み込む

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
23