Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Integrate Linphone app to my iOS app

There are about 20 questions on Linphone ios build in StackOverflow. A couple of them ask about integrating Linphone to an existing xcode project. I have followed them all. I am able to build and run the Linphone project successfully.

However, to integrate to my existing project, I have included:

  • linphone-sdk/apple-darwin/include and linphone-sdk/apple-darwin/lib to my project.
  • the following lines to Xcode project->Build Settings->Search Path/Header Search Path: submodules/linphone/coreapi submodules/linphone/mediastreamer2/include submodules/linphone/mediastreamer2/include submodules/linphone/oRTP/include submodules/externals/gsm/ submodules/externals/osip/include submodules/externals/exosip/include submodules/externals/speex/include Classes/Utils/NinePatch/ Classes/Utils/XMLRPC/
  • marking all .a with target membership to my current target

What else should i do to get Linphone working in my project? Or should I make a static library of Linphone? If Yes, what things should i take care about?

like image 665
instaable Avatar asked Aug 06 '13 13:08

instaable


People also ask

Does linphone work on an Iphone?

Linphone 4.3 for iOS and Android | Linphone.

What is linphone SDK?

Linphone is an open source softphone for voice and video over IP calling and instant messaging. It is fully SIP-based, for all calling, presence and IM features.


1 Answers

To be able to build and run Linphone on a Swift project I had to the following steps:

  1. Downlaod the latest SDK (with wget) from: http://www.linphone.org/snapshots/ios/liblinphone-iphone-sdk-latest.zip

  2. Copy,paste and insert in the project:

    • liblinphone-sdk/apple-darwin/include
    • liblinphone-sdk/apple-darwin/lib
    • liblinphone-sdk/apple-darwin/share/images
    • liblinphone-sdk/apple-darwin/share/sounds
  3. Create a Bridging-Header.h with:

    • #import <Foundation/Foundation.h>
    • #import <UIKit/UIKit.h>
    • #import <linphone/linphonecore.h>
  4. Create a PrefixHeader.pch which import your Bridging-Header:

    • #import "Bridging-Header.h"
  5. Integrate The following pods:

    • pod 'xmlrpc', '~> 2.3.4'
    • pod 'Tortuga22-NinePatch', '~> 0.1.1'
  6. Configure the build Settings:

`

GCC_PRECOMPILE_PREFIX_HEADER = YES
GCC_PREFIX_HEADER = path/to/PrefixHeader.pch
OTHER_LDFLAGS = -ObjC $(inherited)
FRAMEWORK_SEARCH_PATHS = $(inherited)
HEADER_SEARCH_PATHS = $(inherited) ${PODS_ROOT}/Headers/Public $(PROJECT_DIR)/External/liblinphone-sdk/apple-darwin/include
LIBRARY_SEARCH_PATHS = $(inherited) $(PROJECT_DIR)/External/liblinphone-sdk/apple-darwin/lib $(PROJECT_DIR)/External/liblinphone-sdk/apple-darwin/lib/mediastreamer/plugins

`

  1. Configure the macros:

`

GCC_PREPROCESSOR_DEFINITIONS = $(inherited) HAVE_OPENH264 HAVE_SILK HAVE_SSL
OTHER_SWIFT_FLAGS = $(inherited) -D HAVE_OPENH264 -D HAVE_SILK -D HAVE_SSL

`

  1. Libraries and Framework:

First add all the libs from the folder (and subfolders) liblinphone-sdk/apple-darwin/lib. Then be sure to add the following list:

Pods:

  • libPods.a

Dynamic Libs:

  • libz.dylib
  • libiconv.dylib
  • libxml2.dylib
  • libsqlite3.dylib
  • libc++.dylib
  • libstdc++.6.dylib
  • libresolv.dylib

Frameworks: (sorry I'm not sure if they are all 100% needed but this is how I managed to get the lib to build)

  • AudioToolbox.framework
  • UIKit.framework
  • QuartzCore.framework
  • OpenGLES.framework
  • MessageUI.framework
  • MediaPlayer.framework
  • CoreGraphics.framework
  • MobileCoreServices.framework
  • AddressBookUI.framework
  • AddressBook.framework
  • SystemConfiguration.framework
  • CFNetwork.framework
  • AssetsLibrary.framework
  • AVFoundation.framework
  • CoreAudio.framework
  • CoreMedia.framework
  • CoreTelephony.framework
  • CoreVideo.framework
  • Foundation.framework
  • CoreLocation.framework

How to test:

To verify that it was working, I integrated some sample code from the Linphone app and made some minor setups in my view controllers. To do so I integrated in the project the following classes:

  • Utils.[h, m]
  • LinphoneManager.[h, m]
  • LinphoneCoreSettingsStore.[h, m]
  • FastAddressBook.[h, m]
  • LinphoneIOSVersion.h
  • pod 'InAppSettingsKit', '~> 2.6'

PS: I had to update them in order to build without warnings or errors.

I hope this will help someone one day!

like image 50
Kevin Delord Avatar answered Sep 28 '22 08:09

Kevin Delord