Help us understand the problem. What is going on with this article?

iPhone 5にPJSIPを組み込む

More than 5 years have passed since last update.

一度記事を消してしまったので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に組み込む

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away