将Linphone集成到自己的iOS项目中

Rav*_*tam 0 iphone sip ios linphone

我正在使用Linphone创建基于voip呼叫的项目,并且我还成功构建并运行了Linphone项目并成功运行了音频和视频呼叫。现在,我正在将Linphone集成到我自己的项目中,与此同时我面临许多问题。我使用以下一些链接寻求帮助,但没有完整的说明。谁能为我提供完整的运行步骤-

http://shallwelearn.com/blog/build-linphone-for-iphone-and-ipad/

将Linphone应用程序集成到我的iOS应用程序

如何将Linphone集成到现有项目(IOS中的SIP)

http://www.linphone.org/technical-corner/linphone/overview

如何将Linphone集成到现有项目(IOS中的SIP)

http://lists.gnu.org/archive/html/linphone-developers/2014-09/msg00109.html

http://www.successmonkey.co.nz/blog/building-linphone-for-ios

And*_*nov 5

  • 从以下链接下载Liblinphone iPhone SDK:http : //www.linphone.org/releases/ios选择最新版本。
  • 将两个文件夹(includelib)移到您的项目文件夹中
  • 在项目的“ 构建设置”中将路径添加到这些文件夹-INCLUDE文件夹转到标头,而LIB文件夹转到
  • 链接框架的“ 常规”选项卡中,添加LIB文件夹中的所有文件
  • 下载/克隆仓库https://github.com/BelledonneCommunications/linphone-iphone
  • 查找4个文件:LinphoneManager.h / .mUtils.h / .m,将它们包含在您的项目文件夹中,并将它们添加到左侧窗格中的其他类文件中
  • 尝试编译您的项目-xCode会向您发送错误消息-可以。
  • 您需要检查错误并仅删除所有引起错误的文件导入(一些Linphone通讯录文件/一些配置存储文件以及一些在项目中不需要基本使用的帮助器类(因为很可能已经在您的产品中实现了此功能)现有项目))
  • 然后再次编译并检查方法中的所有错误。注释删除任何有问题的代码块(大约有10-15个)。

LinphoneManager类已经包含了许多有用的功能-例如良好的监视和对linphone内核的使用以及良好的日志记录等,等等,但并非全部(不幸的是)。


Rav*_*mar 5

使用 Xcode 11 使用 macos 10.15.6 Catalina

\n

使用 Cocoapod 的 Linphone SDK 4.4.0

\n

https://github.com/BelledonneCommunications/linphone-sdk/blob/master/README.md

\n

使用本地 linphone SDK\n从 gitlab 克隆 linphone-sdk 存储库:

\n
$ git clone https://gitlab.linphone.org/BC/public/linphone-sdk.git --recursive \n$ git submodule update --init --recursive\n
Run Code Online (Sandbox Code Playgroud)\n

或者

\n
$ git clone --recurse-submodules https://gitlab.linphone.org/BC/public/linphone-sdk.git\n
Run Code Online (Sandbox Code Playgroud)\n

重建项目:

\n

PODFILE_PATH= pod install\n其中是 linphone-sdk 项目的构建目录,其中包含 linphone-sdk.podspec 文件和包含构建框架和资源的 linphone-sdk ouptut 目录。

\n

Pod 文件看起来像

\n
\n
source "https://gitlab.linphone.org/BC/public/podspec.git"\nsource "https://github.com/CocoaPods/Specs.git"\n\ndef common_pods\n    use_frameworks!\n\n    pod \'linphone-sdk\', \'4.4.0\'\nend\n
Run Code Online (Sandbox Code Playgroud)\n

然后使用 Xcode 打开 linphone.xcworkspace 来构建并运行应用程序。

\n

Linphone SDK 4.4.0 使用编译

\n
$ git clone https://gitlab.linphone.org/BC/public/linphone-sdk.git -- recursive\n$ git submodule update --init --recursive\n
Run Code Online (Sandbox Code Playgroud)\n

或者

\n
$ git clone --recurse-submodules https://gitlab.linphone.org/BC/public/linphone-sdk.git\n
Run Code Online (Sandbox Code Playgroud)\n

进入构建目录

\n
$ mkdir build && cd build\n
Run Code Online (Sandbox Code Playgroud)\n

\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2 \x80\x94\xe2\x80\x94\xe2\x80\x94

\n

https://gitlab.linphone.org/BC/public/linphone-cmake-builder/blob/ios-3.13.19/README.python.md

\n

首先,安装brew

\n
$ brew install cmake\n$ brew install yasm\n$ brew install pkg-config\n
Run Code Online (Sandbox Code Playgroud)\n

安装点->

\n
$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py\n$ python get-pip.py\n\n$ python -m pip install pystache //Check by $ python -m pip list\n\n$ brew install doxygen\n
Run Code Online (Sandbox Code Playgroud)\n

\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2 \x80\x94\xe2\x80\x94\xe2\x80\x94

\n
$ cmake .. -G Xcode -DLINPHONESDK_PLATFORM=IOS -DENABLE_G729=YES -DENABLE_G729B_CNG=YES -DENABLE_VCARD=OFF -DENABLE_ILBC=OFF -DENABLE_SILK=OFF -DENABLE_ISAC=OFF -DENABLE_MKV=OFF -DENABLE_GSM=OFF -DENABLE_DOC=OFF -DENABLE_UNIT_TESTS=OFF -DENABLE_LIME=OFF -DENABLE_GPL_THIRD_PARTIES=OFF -DENABLE_NON_FREE_CODECS=OFF\n
Run Code Online (Sandbox Code Playgroud)\n

注意 - 在此步骤中,我们还将在 linphone sdk 中启用 G729 dedec 支持。

\n
$ cmake --build . --config RelWithDebInfo\n
Run Code Online (Sandbox Code Playgroud)\n

编译过程完成现在需要与Xcode集成

\n

编译后的 Linphone SDK 集成到 Xcode 中。

\n

在下面的目录中找到编译好的sdk\nlinphone-sdk -> build -> linphone-sdk -> apple-darwin

\n
    \n
  1. 框架和共享文件夹添加到xcode项目中,框架具有多种通用架构。
  2. \n
  3. 框架路径添加到构建设置中的框架搜索中
  4. \n
  5. Frameworks 文件夹中的每个框架,在添加到 Xcode Framework 设置中时,都应该输入“embed and sign”(即嵌入框架),而不是默认的“do not embed”。这是最重要的部分。
  6. \n
  7. apple-darwin -> Tools 文件夹中有 deply.sh 脚本,复制其内容并在“构建设置”中创建一个新的运行脚本并粘贴到其中”
  8. \n
  9. 棘手的部分是在哪里放置第四点的脚本,以便使用带条和切片的存档上传应用程序。编辑方案 -> 存档 -> 打开下拉菜单 -> 发布操作 -> + 添加新脚本 -> 复制和粘贴。
  10. \n
\n

6(可选)。如果体验脚本由于使用了我们的项目的 fat 库而导致应用程序崩溃,则脚本中有一个微小的更改,我从此 URL 找到了解决方案 - Errors Building Xcode Project after add in Run Script fatal error: lipo: input file

\n
APP_PATH="${TARGET_BUILD_DIR}/${WRAPPER_NAME}"\n\nfind "$APP_PATH" -name \'*.framework\' -type d | while read -r FRAMEWORK\ndo\n    FRAMEWORK_EXECUTABLE_NAME=$(defaults read "$FRAMEWORK/Info.plist" CFBundleExecutable)\n    FRAMEWORK_EXECUTABLE_PATH="$FRAMEWORK/$FRAMEWORK_EXECUTABLE_NAME"\n    echo "Executable is $FRAMEWORK_EXECUTABLE_PATH"\n\n# Start of Script modify - identify if the framework is FAT. If it is, then it skips it.\n    if [ ! -f "${FRAMEWORK_EXECUTABLE_PATH}" ]; then\n        continue\n    fi\n\n    if xcrun lipo -info "${FRAMEWORK_EXECUTABLE_PATH}" | grep --silent "Non-fat"; then\n        echo "Framework non-fat, skipping: $FRAMEWORK_EXECUTABLE_NAME"\n        continue\n    fi\n\n    echo "Thinning framework $FRAMEWORK_EXECUTABLE_NAME"\n# end of Script modify\n\n    EXTRACTED_ARCHS=()\n\n    for ARCH in $ARCHS\n    do\n        echo "Extracting $ARCH from $FRAMEWORK_EXECUTABLE_NAME"\n        lipo -extract "$ARCH" "$FRAMEWORK_EXECUTABLE_PATH" -o "$FRAMEWORK_EXECUTABLE_PATH-$ARCH"\n        EXTRACTED_ARCHS+=("$FRAMEWORK_EXECUTABLE_PATH-$ARCH")\n    done\n\n    echo "Merging extracted architectures: ${ARCHS}"\n    lipo -o "$FRAMEWORK_EXECUTABLE_PATH-merged" -create "${EXTRACTED_ARCHS[@]}"\n    rm "${EXTRACTED_ARCHS[@]}"\n\n    echo "Replacing original executable with thinned version"\n    rm "$FRAMEWORK_EXECUTABLE_PATH"\n    mv "$FRAMEWORK_EXECUTABLE_PATH-merged" "$FRAMEWORK_EXECUTABLE_PATH"\n\ndone\n
Run Code Online (Sandbox Code Playgroud)\n
    \n
  1. 如果您正在使用 pod,则在 pod 目录上使用终端命令“pod deintegrate”来集成 pod。还要从项目中删除 .xcworkspace 文件。
  2. \n
  3. 现在使用终端命令“pod install”安装 pod
  4. \n
\n

注意:如果您的情况是添加脚本导致应用程序崩溃,正如我在第六点中提到的,但每次添加脚本时,都必须 pod deintegra 帮助我避免它。

\n

:) 现在可以在您的项目中享受使用 linphone sdk 的乐趣了。

\n

linphone sdk 结束

\n

我们项目中的 Linphone SDK 配置。

\n
    \n
  1. 启用编解码器 - 要启用音频编解码器,首先在 Audio.plist 文件中启用 g729_preference 的 defaultValue,最后一步在项目 -> 目标 -> 构建设置中找到“预处理器宏”并包含 HAVE_G729,它会在 sip 日志中打印,如添加 G729/8000 for兼容性,以防万一。
  2. \n
\n

#更新 - 添加第五点编译以将应用程序上传到应用程序商店和 G729 编解码器配置。

\n