No description
Find a file
2024-01-25 10:21:51 +01:00
.tx translations 2018-05-24 15:19:59 +02:00
Classes Update Czech and Japanese translations) 2023-12-28 10:45:34 +01:00
doc add documentation 2016-08-12 18:02:37 +02:00
linphone.xcodeproj Upgrade deployment target to 13.0, update provisioning profiles 2024-01-25 10:21:51 +01:00
linphone.xcworkspace implement CallUITests classes (TestCases, TestPlans, Methods, Accessibility Identifiers) 2022-10-04 15:03:35 -04:00
linphoneExtension Remove the intermediate confirmation window when sharing something from outside the app 2022-01-26 11:05:29 +01:00
LocalPushProvider Fix build 2023-10-17 17:11:59 +02:00
msgNotification Local Push Notification - Network extension 2023-10-17 12:23:30 +02:00
msgNotificationContent Fixes notification actions not showing 2022-02-04 09:34:16 +01:00
msgNotificationService Fixed iOS notifications when it's an emoji reaction 2023-10-17 13:53:44 +02:00
Resources Disable the "send databases" option in advanced settings 2023-12-28 11:39:22 +01:00
scripts Added FR, DE, NL and RU translations from android + added tool to import from android (read me inside) 2022-06-16 13:17:01 +02:00
Settings/InAppSettings.bundle Update Czech and Japanese translations) 2023-12-28 10:45:34 +01:00
TestsUI update push notification parameters 2020-02-07 17:03:59 +01:00
Tools change licence to gpl-v3 2019-10-16 15:10:09 +02:00
UITests Fix master build for sdk 5.3 2023-08-28 17:21:45 +02:00
.git-pre-commit .git-pre-commit: update to have both diff patch and file patch 2016-02-08 11:19:33 +01:00
.gitignore add GoogleService-Info.plist into gitignore 2019-01-11 18:10:34 +01:00
.gitlab-ci.yml Merge release/5.1 into master. 2023-07-07 15:07:44 +02:00
.gitmodules use KIF by cocoapods 2019-04-19 14:03:44 +02:00
.travis.yml .travis.yml: do not mute make 2016-06-23 17:06:39 +02:00
CallUITests-Info.plist implement CallUITests classes (TestCases, TestPlans, Methods, Accessibility Identifiers) 2022-10-04 15:03:35 -04:00
CHANGELOG.md Update changelog, xcodprojversion, and podfile, for 5.2.1 release 2023-12-28 11:43:02 +01:00
CONTRIBUTING.md CONTRIBUTING.md: created file 2015-12-21 17:24:44 +01:00
GoogleService-Info.plist Fixes for 5.2 release 2023-11-28 23:44:28 +01:00
iTunesArtwork resources: add ipad specific images 2016-02-01 12:14:29 +01:00
LICENSE.txt rename file LICENSE.txt 2019-11-05 16:52:50 +01:00
linphone-adhoc.plist initiate CI 2020-03-12 16:14:22 +01:00
linphone-Info.plist Added calendar sharing of ICS from bubble chat 2022-06-30 12:27:22 +02:00
linphone.entitlements Local Push Notification - Network extension 2023-10-17 12:23:30 +02:00
linphone_Prefix.pch Merge new UI for Call and Conferences 2022-06-15 17:33:36 +02:00
main.m update copyright 2020-06-17 09:57:37 +02:00
Podfile Update changelog, xcodprojversion, and podfile, for 5.2.1 release 2023-12-28 11:43:02 +01:00
prepare.conf enable limev2 2018-09-06 17:32:40 +02:00
prepare.py change licence to gpl-v3 2019-10-16 15:10:09 +02:00
README.md Local Push Notification - Network extension 2023-10-17 12:23:30 +02:00

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

License

Copyright © Belledonne Communications

Linphone is dual licensed, and is available either :

  • under a GNU/GPLv3 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 for any question about costs and services.

Documentation

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

We no longer use transifex for the translation process, instead we have deployed our own instance of Weblate.

Due to the full app rewrite we can't re-use previous translations, so we'll be very happy if you want to contribute.

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.

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 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 crashlytics

We've integrated Crashlytics 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_CRASHLYTICS=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".

Local Push Notifications

  • application local push network extension
  • requires local push entitlement
  • enabled either inside settings/network from app UI
  • by remote provisionning/configuration, section local_push, key ssids (CSV of SSIDs on which to enable)
  • when extension is running under "connected" appears a "local push active" label
  • provisionning profile need to be built on Apple console, the entitlement onboarding on profile is asked at last. (automatic provisionning/signing from Xcode will not pick it up - tested on 14.3.1)
  • If deploying code from Xcode the extension must not be running, otherwise need device will need reboot to run it again. Just disabling wifi prior to deploying code from Xcode does the trick (14.3.1)
  • use a unique uuid to avoid conflict with app core ([misc]uuid)
  • use replica of app config