Linphone是一个开源的软电话,用于IP语音和视频通话以及即时通讯。它完全基于SIP协议,提供所有呼叫、状态显示和即时通讯功能。 可从Linphone网站获取一般描述。
许可证
版权所有 © Belledonne Communications
Linphone采用双重许可,可以选择:
- 基于GNU/GPLv3许可证免费使用(开源)。使用前请确保您理解并同意该许可证的条款(详见LICENSE文件)。
- 基于专有许可证,收费使用,可用于闭源应用程序。如有任何关于费用和服务的问题,请联系Belledonne Communications。
文档
- 支持的功能和RFC: https://www.linphone.org/technical-corner/linphone/features
- Linphone公共维基: https://wiki.linphone.org/xwiki/wiki/public/view/Linphone/
如何贡献?
感谢您的询问!我们欢迎来自每个人的拉取请求。根据您想做的事情,您可以通过以下方式帮助我们改进Linphone:
帮助翻译
我们不再使用Transifex进行翻译,而是部署了自己的Weblate实例。
由于应用程序完全重写,我们无法重用之前的翻译,因此如果您愿意贡献,我们将非常高兴。
报告错误和提交补丁
如果您想深入研究Linphone代码或报告错误,请先阅读CONTRIBUTING.md
。您还应该完整阅读此README
;-)。
如何成为beta测试人员?
加入Beta测试:
- 从App Store下载TestFlight并使用您的Apple ID登录
- 在iOS设备上点击公共链接。公共链接: https://testflight.apple.com/join/LUlmZWjH
- 点击在TestFlight中查看或开始测试。您也可以点击接受、安装或更新Linphone应用程序。
- 就这样!当有新版本可用时,您可以使用相同的公共链接更新beta版本
发送崩溃报告:
- TestFlight会自动完成此操作
报告错误:
- 打开Linphone
- 进入设置 —> 高级 —> 发送日志
- 会创建一封附带日志的电子邮件,发送至linphone-iphone@belledonne-communications.com
- 在错误描述中填写:
- 您当时在做什么
- 发生了什么
- 您期望发生什么
- 大致什么时候发生的错误
- 将主题更改为[Beta test - Bug report]
- 发送邮件
构建应用程序
新特性
现在构建linphone-iphone的默认方式是使用CocoaPods获取linphone-sdk框架。 与之前的版本相比,该项目不再使用开发者必须构建的子模块来获得可用的应用程序。 但是,如果您希望使用本地编译的SDK,请阅读下面的"使用本地linphone SDK"段落了解如何操作。
构建应用程序
如果您还没有安装CocoaPods,可以使用以下命令下载并安装:
sudo gem install cocoapods
如果您已经安装了Cocoapods,请确保版本高于1.7.5。
- 首先使用cocoapods安装应用程序的依赖项:
pod install
它将从我们的gitlab存储库下载linphone-sdk,因此您无需自己构建任何内容。
- 然后使用XCode打开
linphone.xcworkspace
文件(不是linphone.xcodeproj)来构建和运行应用程序。
限制和已知问题
- 视频捕获在模拟器中无法工作(未在其中实现)。
使用本地linphone SDK
- 从我们的gitlab克隆linphone-sdk存储库:
git clone https://gitlab.linphone.org/BC/public/linphone-sdk.git --recursive
-
按照linphone-sdk/README文件中的说明构建SDK。
-
重新构建项目:
PODFILE_PATH=<path to linphone-sdk-ios> pod install
其中linphone-sdk.podspec
文件和包含已构建框架和资源的linphone-sdk
输出目录。
- 然后使用Xcode打开linphone.xcworkspace来构建和运行应用程序。
启用crashlytics
我们已将Crashlytics集成到liphone-iphone中,它可以自动发送崩溃报告。默认情况下它是禁用的。 要激活它:
-
将此项目的GoogleService-Info.plist替换为您的(特定于您的crashlytics账户)。
-
重新构建项目:
USE_CRASHLYTICS=true pod install
- 然后使用Xcode打开
linphone.xcworkspace
来构建和运行应用程序。
快速UI参考
-
应用程序包含在一个窗口中,该窗口位于MainStoryboard文件中。
-
在main.m中,通过传递其类将委托设置为LinphoneAppDelegate,位于UIApplicationMain()中
-
基本布局:
MainStoryboard | | (rootViewController) | PhoneMainView ---> view |--> app background | | | |--> statusbar background | | (mainViewController) | UICompositeView : TPMultilayout | |---> view |--> statusBar | |--> contentView | |--> tabBar
当应用程序启动时,phoneMainView会被要求过渡到拨号器视图或助手视图。 PhoneMainView暴露了-changeCurrentView:方法,该方法将进行设置 任何Linphone视图实际上都在UICompositeView中呈现,有或没有状态栏和标签栏。
UICompositeView由3个垂直布局的区域组成。从上到下:状态栏、内容和标签栏。 标签栏通常是UIMainBar,用作导航控制器:单击每个按钮将触发到另一个"视图"的过渡。