Skip to content

AGProjects/sylk-mobile

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Sylk Mobile

Sylk Mobile is part of Sylk Suite, a set of real-time communications applications using IETF SIP protocol and WebRTC specifications.

Sylk Suite consists of:

  • Sylk SIP/WebRTC application server
  • Sylk mobile push notifications server
  • Sylk desktop client for Windows, Linux and MacOS
  • Sylk mobile client for Apple iOS and Google Android
  • Web page for WebRTC enabled browsers
  • Mobile client API development SDK
  • Desktop client API development SDK

Home page

License

Sylk mobile licensed under GNU General Public License version 3. A copy of the license is available at http://www.fsf.org/licensing/licenses/gpl-3.0.html

Copyright 2022 AG Projects

Availability

Features

  • 1-to-1 audio and video calls
  • Encrypted end-to-end text messaging
  • Encrypted end-to-end file transfers
  • Synchronization between multiple devices
  • Multiparty conferencing for all supported media
  • Call history entries management
  • Native address book lookup
  • Native OS telephony integration
  • Multiparty conferences for all media
  • Support for landscape and portrait modes
  • Interoperable with SIP clients
  • Receive calls from the web

Messages are encrypted end-to-end using OpenPGP.

File transfers are encrypted end-to-end using OpenPGP, whenever possible.

Credits

Funding partners

People

  • Adrian Georgescu - Project lead, maintenace and support
  • Saúl Ibarra Corretgé - Inception architect / original idea
  • Tijmen de Mes - API, Conference, Chat and desktop features
  • Dan Jenkins - WebRTC and React Native mechanic
  • Michiel Leenaars - Strategic guidance

Old contributions

  • Support for Self Sovereign Identity (SSI): Alexander Blom

Running dependencies

Generic SIP server infrastructure is required. For a working preconfigured example based on OpenSIPS follow:

Edit app/config.js with your server end-points.

Developing dependencies

Getting Started

Building dependencies

  • NVM from https://heynode.com/tutorial/install-nodejs-locally-nvm/

  • Using nvm install Node.js version 21

  • Yarn (for package management) curl -o- -L https://yarnpkg.com/install.sh | bash

  • XCode 16

  • Android Studio (or at least the Android SDK) Go to Studio settings and install SDK version 36 and command line tools export ANDROID_SDK_ROOT=/Users/example/Library/Android/sdk

  • Gem (for installing gem files)

  • Fastlane (for deploying to testflight/google play store) brew update brew install ruby brew install ios-deploy gem install bundler gem install fastlane -NV

  • Cocoapods (for handling iOS Pods)

    • Install RVM: curl -L https://get.rvm.io | bash -s stable

    • Add to .bash_profile export LANG=en_US.UTF-8 export LANGUAGE=en_US.UTF-8 export LC_ALL=en_US.UTF-8

    • sudo gem install concurrent-ruby -v 1.3.4

    • sudo gem install cocoapods

Install

Follow the Getting Started guide as much as you can but not everything will be explained. No install docs will be listed here for each tool as they'll change, go and check them out yourself.

Updating the app

Yarn can be a bit of a pain, especially when a git dependency changes.

To be sure you're running the lastest code run:

rm -rf node_modules
rm -r android/app/build
yarn cache clean
yarn
rm -rf ios/Pods
rm Podfile.lock
rm -r ~/.cocoapods
cd ios; pod setup; pod install; cd ..

You might want to bring the project back to a clean repo if you're hitting any issues.

Try it as a dry-run first

git clean -d -x --dry-run
git clean -d -x -f

npm rebuild node-sass

Running the app

Use react-native run-ios --help and react-native run-android --help to give you all you need to know. You shouldn't ever have to build from Xcode or Android Studio.

Running on the iOS Simulator

open ios/sylk.xcworkspace/

Running on the Android Simulator or device

If you don't have any simulators running, and don't have an android device plugged in (or available to adb) React Native will start up a simulator for you. If you have a device available (doesn't matter if its real or a simulator) this command will output to the device.

yarn react-native run-android

To see the logs of the attached Android device:

adb logcat '*:W'.

Debugging

Install https://reactnative.dev/docs/debugging#react-developer-tools

Shake the device and touch Debug.

In XCode enable debugger:

Product -> Scheme -> Edit -> Run -> Build Configuration -> Debug

Running on the iOS Device

Start Metro:

npx react-native start

Find the list of connected devices:

xcrun xctrace list devices

Get the id of the device and run:

xcodebuild -workspace ios/sylk.xcworkspace -scheme sylk \
-configuration Debug \
-destination 'id=00008120-0018510402A2201E' \
build install

Or press Run inside the sylk target in Xcode.

Running on a specific Android Device

yarn react-native run-android --deviceId "DeviceId"

--deviceId [string] builds your app and starts it on a specific device/simulator with the given device id (listed by running "adb devices" on the command line).

Running without debugging

To run the app on your device without tethering it to USB:

On Android:

yarn react-native run-android --mode=release

On iOS:

Select menu Product -> Scheme -> Edit scheme andselect for Run Build Configuration = Release

Beware that iOS push tokens are still meant for sandbox unless the app is released through Apple Store.

Building the app for deployment

We use fastlane for building production versions of the app.

Fastlane can handle all the metadata around your entry into the relevant App Stores and much much more too.

Currently we have two commands - you will need to open Xcode and allow it to sync the deployment key as we allow Xcode to control that rather than do it ourselves. We could add it directly into the project with git-crypt and tell fastlane to use it to make this easier.

fastlane ios beta
fastlane android beta

Patches

We utilise the patch-package module in order to patch the react-native-callkeep module instead of maintaining a complete fork. See their README on how to make changes to the patch and how those patches get installed automatically within this project on install of npm modules.

Update sylkrts.js

yarn add -D AGProjects/sylkrtc.js

Firebase notifications reference

https://firebase.google.com/docs/reference/fcm/rest/v1/projects.messages#AndroidNotification

About

Sylk WebRTC mobile client

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •