繁体   English   中英

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

Integrate Linphone in own iOS project

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我正在使用 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

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

LinphoneManager 类已经包含了许多有用的特性——比如良好的监视和使用具有良好日志记录的 linphone 核心等等,但不是全部(不幸的是)。

使用 macOS 10.15.6 Catalina 的 Xcode 11

Linphone SDK 4.4.0 使用 Cocoapod

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

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

$ git clone https://gitlab.linphone.org/BC/public/linphone-sdk.git --recursive 
$ git submodule update --init --recursive

或者

$ git clone --recurse-submodules https://gitlab.linphone.org/BC/public/linphone-sdk.git

重建项目:

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

Pod 文件看起来像


source "https://gitlab.linphone.org/BC/public/podspec.git"
source "https://github.com/CocoaPods/Specs.git"

def common_pods
    use_frameworks!

    pod 'linphone-sdk', '4.4.0'
end

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

Linphone SDK 4.4.0 使用编译

$ git clone https://gitlab.linphone.org/BC/public/linphone-sdk.git -- recursive
$ git submodule update --init --recursive

或者

$ git clone --recurse-submodules https://gitlab.linphone.org/BC/public/linphone-sdk.git

进入构建目录

$ mkdir build && cd build

———————————

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

首先,安装brew

$ brew install cmake
$ brew install yasm
$ brew install pkg-config

安装 pip ->

$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
$ python get-pip.py

$ python -m pip install pystache //Check by $ python -m pip list

$ brew install doxygen

———————————

$ 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

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

$ cmake --build . --config RelWithDebInfo

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

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

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

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

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

APP_PATH="${TARGET_BUILD_DIR}/${WRAPPER_NAME}"

find "$APP_PATH" -name '*.framework' -type d | while read -r FRAMEWORK
do
    FRAMEWORK_EXECUTABLE_NAME=$(defaults read "$FRAMEWORK/Info.plist" CFBundleExecutable)
    FRAMEWORK_EXECUTABLE_PATH="$FRAMEWORK/$FRAMEWORK_EXECUTABLE_NAME"
    echo "Executable is $FRAMEWORK_EXECUTABLE_PATH"

# Start of Script modify - identify if the framework is FAT. If it is, then it skips it.
    if [ ! -f "${FRAMEWORK_EXECUTABLE_PATH}" ]; then
        continue
    fi

    if xcrun lipo -info "${FRAMEWORK_EXECUTABLE_PATH}" | grep --silent "Non-fat"; then
        echo "Framework non-fat, skipping: $FRAMEWORK_EXECUTABLE_NAME"
        continue
    fi

    echo "Thinning framework $FRAMEWORK_EXECUTABLE_NAME"
# end of Script modify

    EXTRACTED_ARCHS=()

    for ARCH in $ARCHS
    do
        echo "Extracting $ARCH from $FRAMEWORK_EXECUTABLE_NAME"
        lipo -extract "$ARCH" "$FRAMEWORK_EXECUTABLE_PATH" -o "$FRAMEWORK_EXECUTABLE_PATH-$ARCH"
        EXTRACTED_ARCHS+=("$FRAMEWORK_EXECUTABLE_PATH-$ARCH")
    done

    echo "Merging extracted architectures: ${ARCHS}"
    lipo -o "$FRAMEWORK_EXECUTABLE_PATH-merged" -create "${EXTRACTED_ARCHS[@]}"
    rm "${EXTRACTED_ARCHS[@]}"

    echo "Replacing original executable with thinned version"
    rm "$FRAMEWORK_EXECUTABLE_PATH"
    mv "$FRAMEWORK_EXECUTABLE_PATH-merged" "$FRAMEWORK_EXECUTABLE_PATH"

done
  1. 如果您正在使用 pod,则在您的 pod 目录中使用终端命令“pod deintegrate”来取消集成 pod。 还要从项目中删除 .xcworkspace 文件。
  2. 现在使用终端命令“pod install”安装pod

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

:) 现在可以在您的项目中使用 linphone sdk。

linphone sdk 结束

我们项目中的 Linphone SDK 配置。

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

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

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

我正在寻找在我的ios项目中集成Linphone库。 而且我找不到教程来帮助我。 这个项目提供的文档非常少,但似乎运行良好。 有关信息,这是提供其开源代码的项目页面: Linphone开源代码 我已经按照所有步骤编译了源代码并且这项工作非常顺利,但下一步是将我的个人iP ...

2 将linphone集成到iOS

我正在尝试将linphone lib添加到我现有的iOS应用中,但是无法构建 我的过程: 在我现有的项目中添加了所有必需的框架作品。 将所有lib从linphone-iphone / liblinphone-sdk / apple-darwin / lib /复制到myp ...

4 如何在现有的Android项目中集成Linphone

我是Linphone的新手,我有问题关于linphone与我的android项目的集成。 由于没有足够的关于Linphone库的教程以及如何使用它。 因此,我想请一步一步向我提供有关linphonoe与我的android项目集成的帮助 提前致谢 ...

7 适用于iOS的Linphone

我需要为iOS(以及之后的android和windows)构建linphone,但这是后来关注的问题。 由于没有人能够回答我之前的问题或类似 问题 ,有人至少可以指出我在这个问题上的良好资源吗? 我觉得我已经尝试了所有东西,而且项目仍然无法编译(缺少大量文件,包含路径错误,找不到库等等)。 ...

8 为 iPhone 集成 Linphone

我想在我的项目中实施 Linphone,但我被困在两者之间,我现在不知道该去哪里。 我所做的是下载 linphone-iphone-master sdk masterhttps://github.com/BelledonneCommunications/linphone-iphone 然后这个来 ...

9 在Linphone Android中集成隧道

我有工作的linphone-android应用程序源代码。 工作正常。 我面临的问题是,我已成功注册到我的sip服务器,并且每当我拨打电话时,电话均成功连接,并且没有声音。 如果我连接的VPN比电话有声音.. 问题1我想集成隧道,以便linphone在通话中始终保持声音。 我不 ...

10 将Linphone与星号集成以进行推送通知

我已经安装了asterisk server并编译了最新的linphone iOS源代码。 现在,所有功能都可以正常运行,而不必在后台运行并且不锁定电话屏幕,无法通话。 当应用关闭或iPhone屏幕锁定时,我无法收到来自其他linphone电话的呼叫(从Playstore下载)。 我已经使用SIP ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM