forked from mirrors/linphone-iphone
156 lines
6.5 KiB
Markdown
156 lines
6.5 KiB
Markdown
|
||
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.
|
||
General description is available from [linphone web site](https://www.linphone.org/technical-corner/linphone)
|
||
|
||
## License
|
||
|
||
Copyright © Belledonne Communications
|
||
|
||
Linphone is dual licensed, and is available either :
|
||
- under a [GNU/GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html) license, for free (open source). Please make sure that you understand and agree with the terms of this license before using it (see LICENSE file for details).
|
||
- under a proprietary license, for a fee, to be used in closed source applications. Contact [Belledonne Communications](https://www.linphone.org/contact) for any question about costs and services.
|
||
|
||
## Documentation
|
||
|
||
- Supported features and RFCs : https://www.linphone.org/technical-corner/linphone/features
|
||
- Linphone public wiki : https://wiki.linphone.org/xwiki/wiki/public/view/Linphone/
|
||
|
||
|
||
# How can I contribute?
|
||
|
||
Thanks for asking! We love pull requests from everyone. Depending on what you want to do, you can help us improve Linphone in
|
||
various ways:
|
||
|
||
## Help on translations
|
||
|
||
<a target="_blank" style="text-decoration:none; color:black; font-size:66%" href="https://www.transifex.com/belledonne-communications/linphone-ios/"
|
||
title="See more information on Transifex.com">Top translations: linphone-ios</a><br/>
|
||
<img border="0" src="https://transifex.com/projects/p/linphone-ios/resource/localizablestrings/chart/image_png"/><br/><a target="_blank" href="/"><img border="0" src="https://ds0k0en9abmn1.cloudfront.net/static/charts/images/tx-logo-micro.646b0065fce6.png"/></a>
|
||
|
||
Interested in helping translate Linphone? Contribute [on Transifex](https://www.transifex.com/belledonne-communications/linphone-ios).
|
||
|
||
## Report bugs and submit patchs
|
||
|
||
If you want to dig through Linphone code or report a bug, please read `CONTRIBUTING.md` first. You should also read this `README` entirely ;-).
|
||
|
||
## How to be a beta tester ?
|
||
|
||
Enter the Beta :
|
||
- Download TestFlight from the App Store and log in it with your apple-id
|
||
-Tap the public link on your iOS device. The public link : https://testflight.apple.com/join/LUlmZWjH
|
||
-Touch View in TestFlight or Start Testing. You can also touch Accept, Install, or Update for Linphone app.
|
||
-And voilà ! You can update your beta version with the same public link when a new one is available
|
||
|
||
Send a crash report :
|
||
- It is done automatically by TestFlight
|
||
|
||
Report a bug :
|
||
- Open Linphone
|
||
- Go to Settings —> Advanced —> Send logs
|
||
- An email to linphone-iphone@belledonne-communications.com is created with your logs attached
|
||
- Fill in the bug description with :
|
||
* What you were doing
|
||
* What happened
|
||
* What you were expecting
|
||
* Approximately when the bug happened
|
||
- Change the object to [Beta test - Bug report]
|
||
- Send the mail
|
||
|
||
# Building the application
|
||
|
||
## What's new
|
||
|
||
Now the default way of building linphone-iphone is to use CocoaPods to retrieve the linphone-sdk frameworks.
|
||
Compared to previous versions, this project no longer uses submodules developper has to build in order to get a working app.
|
||
However, if you wish to use a locally compiled SDK, read paragraph "Using a local linphone SDK" below to know how to proceed.
|
||
|
||
## Building the app
|
||
|
||
If you don't have CocoaPods already, you can download and install it using :
|
||
```
|
||
sudo gem install cocoapods
|
||
```
|
||
**If you alreadly have Cocoapods, make sur that the version is higher than 1.7.5**.
|
||
|
||
- Install the app's dependencies with cocoapods first:
|
||
```
|
||
pod install
|
||
```
|
||
It will download the linphone-sdk from our gitlab repository so you don't have to build anything yourself.
|
||
- Then open `linphone.xcworkspace` file (**NOT linphone.xcodeproj**) with XCode to build and run the app.
|
||
|
||
# Testing the application
|
||
|
||
We are using the Xcode test navigator to test the UI of Linphone.
|
||
|
||
Change the Scheme to LinphoneTester. Press the test navigator button and all the tests will show.
|
||
See: https://developer.apple.com/library/archive/documentation/DeveloperTools/Conceptual/testing_with_xcode/chapters/05-running_tests.html
|
||
|
||
# Limitations and known bugs
|
||
|
||
* Video capture will not work in simulator (not implemented in it).
|
||
|
||
|
||
# Using a local linphone SDK
|
||
|
||
- Clone the linphone-sdk repository from out gitlab:
|
||
```
|
||
git clone https://gitlab.linphone.org/BC/public/linphone-sdk.git --recursive
|
||
```
|
||
|
||
- Follow the instructions in the linphone-sdk/README file to build the SDK.
|
||
|
||
- Rebuild the project:
|
||
```
|
||
PODFILE_PATH=<path to linphone-sdk-ios> pod install
|
||
```
|
||
where <path to linphone-sdk-ios> is your build directory of the linphone-sdk project, containing the `linphone-sdk.podspec` file and a `linphone-sdk` ouptut directory comprising built frameworks and resources.
|
||
|
||
- Then open linphone.xcworkspace with Xcode to build and run the app.
|
||
|
||
# Enabling crashlythics
|
||
|
||
We've integrated Crashlythics into liphone-iphone, which can automatically send crash reports. It is disabled by default.
|
||
To activate it:
|
||
|
||
- Replace the GoogleService-Info.plist for this project with yours (specific to your crashlytics account).
|
||
|
||
- Rebuild the project:
|
||
```
|
||
USE_CRASHLYTHICS=true pod install
|
||
```
|
||
|
||
- Then open `linphone.xcworkspace` with Xcode to build and run the app.
|
||
|
||
# Quick UI reference
|
||
|
||
- The app is contained in a window, which resides in the MainStoryboard file.
|
||
- The delegate is set to LinphoneAppDelegate in main.m, in the UIApplicationMain() by passing its class
|
||
- Basic layout:
|
||
|
||
MainStoryboard
|
||
|
|
||
| (rootViewController)
|
||
|
|
||
PhoneMainView ---> view |--> app background
|
||
| |
|
||
| |--> statusbar background
|
||
|
|
||
| (mainViewController)
|
||
|
|
||
UICompositeView : TPMultilayout
|
||
|
|
||
|---> view |--> statusBar
|
||
|
|
||
|--> contentView
|
||
|
|
||
|--> tabBar
|
||
|
||
|
||
When the application is started, the phoneMainView gets asked to transition to the Dialer view or the Assistant view.
|
||
PhoneMainView exposes the -changeCurrentView: method, which will setup its
|
||
Any Linphone view is actually presented in the UICompositeView, with or without a statusBar and tabBar.
|
||
|
||
The UICompositeView consists of 3 areas laid out vertically. From top to bottom: StatusBar, Content and TabBar.
|
||
The TabBar is usually the UIMainBar, which is used as a navigation controller: clicking on each of the buttons will trigger
|
||
a transition to another "view".
|