SlideShare a Scribd company logo
developing appear.in for iOS and Android
Svein Willassen, ph.d.
VP, head of appear.in, Telenor Digital AS
appear.in primer
appear.in for iOS
why?
iOS implementation
iOS WebRTC quirks
- initially: did not work!
- SDP mangling
- dependency management
- missing support for Perfect Forward
Secrecy
Android implementation
Android quirks
- Feed UI code is only suitable for AppRTC
- WebRTC team only tests code on Nexus device?
- Crash prone, especially related to deallocation
Current learnings
- Lack of documentation
- Do your own QA
- Things will break
Verdict
possible, not for the faint-hearted
developing appear.in for iOS and Android
Svein Willassen, ph.d.
VP, head of appear.in, Telenor Digital AS

More Related Content

Viewers also liked

Kranky Geek - Virtual Collaboration - Igor Pavlov
Kranky Geek - Virtual Collaboration - Igor PavlovKranky Geek - Virtual Collaboration - Igor Pavlov
Kranky Geek - Virtual Collaboration - Igor Pavlov
Igor Pavlov
 
Kranky geeklondon build an app
Kranky geeklondon build an appKranky geeklondon build an app
Kranky geeklondon build an app
Tim Panton
 
IoT and WebRTC
IoT and WebRTCIoT and WebRTC
IoT and WebRTC
Arin Sime
 
Kranky geek15 - securing IoT with webrtc
Kranky geek15 - securing IoT with webrtcKranky geek15 - securing IoT with webrtc
Kranky geek15 - securing IoT with webrtc
Tim Panton
 
WebRTC applications for IoT
WebRTC applications for IoTWebRTC applications for IoT
WebRTC applications for IoT
Ivelin Ivanov
 
WebRTC - a History Lesson
WebRTC - a History LessonWebRTC - a History Lesson
WebRTC - a History Lesson
Tsahi Levent-levi
 
WebRTC on Mobile
WebRTC on MobileWebRTC on Mobile
WebRTC on Mobile
Buşra Deniz, CSM
 
Kranky Geek London (chriskranky)
Kranky Geek London (chriskranky)Kranky Geek London (chriskranky)
Kranky Geek London (chriskranky)
Chris Koehncke
 

Viewers also liked (8)

Kranky Geek - Virtual Collaboration - Igor Pavlov
Kranky Geek - Virtual Collaboration - Igor PavlovKranky Geek - Virtual Collaboration - Igor Pavlov
Kranky Geek - Virtual Collaboration - Igor Pavlov
 
Kranky geeklondon build an app
Kranky geeklondon build an appKranky geeklondon build an app
Kranky geeklondon build an app
 
IoT and WebRTC
IoT and WebRTCIoT and WebRTC
IoT and WebRTC
 
Kranky geek15 - securing IoT with webrtc
Kranky geek15 - securing IoT with webrtcKranky geek15 - securing IoT with webrtc
Kranky geek15 - securing IoT with webrtc
 
WebRTC applications for IoT
WebRTC applications for IoTWebRTC applications for IoT
WebRTC applications for IoT
 
WebRTC - a History Lesson
WebRTC - a History LessonWebRTC - a History Lesson
WebRTC - a History Lesson
 
WebRTC on Mobile
WebRTC on MobileWebRTC on Mobile
WebRTC on Mobile
 
Kranky Geek London (chriskranky)
Kranky Geek London (chriskranky)Kranky Geek London (chriskranky)
Kranky Geek London (chriskranky)
 

Recently uploaded

Harnessing WebAssembly for Real-time Stateless Streaming Pipelines
Harnessing WebAssembly for Real-time Stateless Streaming PipelinesHarnessing WebAssembly for Real-time Stateless Streaming Pipelines
Harnessing WebAssembly for Real-time Stateless Streaming Pipelines
Christina Lin
 
RAT: Retrieval Augmented Thoughts Elicit Context-Aware Reasoning in Long-Hori...
RAT: Retrieval Augmented Thoughts Elicit Context-Aware Reasoning in Long-Hori...RAT: Retrieval Augmented Thoughts Elicit Context-Aware Reasoning in Long-Hori...
RAT: Retrieval Augmented Thoughts Elicit Context-Aware Reasoning in Long-Hori...
thanhdowork
 
Heap Sort (SS).ppt FOR ENGINEERING GRADUATES, BCA, MCA, MTECH, BSC STUDENTS
Heap Sort (SS).ppt FOR ENGINEERING GRADUATES, BCA, MCA, MTECH, BSC STUDENTSHeap Sort (SS).ppt FOR ENGINEERING GRADUATES, BCA, MCA, MTECH, BSC STUDENTS
Heap Sort (SS).ppt FOR ENGINEERING GRADUATES, BCA, MCA, MTECH, BSC STUDENTS
Soumen Santra
 
一比一原版(UofT毕业证)多伦多大学毕业证成绩单如何办理
一比一原版(UofT毕业证)多伦多大学毕业证成绩单如何办理一比一原版(UofT毕业证)多伦多大学毕业证成绩单如何办理
一比一原版(UofT毕业证)多伦多大学毕业证成绩单如何办理
ydteq
 
Student information management system project report ii.pdf
Student information management system project report ii.pdfStudent information management system project report ii.pdf
Student information management system project report ii.pdf
Kamal Acharya
 
Planning Of Procurement o different goods and services
Planning Of Procurement o different goods and servicesPlanning Of Procurement o different goods and services
Planning Of Procurement o different goods and services
JoytuBarua2
 
Governing Equations for Fundamental Aerodynamics_Anderson2010.pdf
Governing Equations for Fundamental Aerodynamics_Anderson2010.pdfGoverning Equations for Fundamental Aerodynamics_Anderson2010.pdf
Governing Equations for Fundamental Aerodynamics_Anderson2010.pdf
WENKENLI1
 
Technical Drawings introduction to drawing of prisms
Technical Drawings introduction to drawing of prismsTechnical Drawings introduction to drawing of prisms
Technical Drawings introduction to drawing of prisms
heavyhaig
 
KuberTENes Birthday Bash Guadalajara - K8sGPT first impressions
KuberTENes Birthday Bash Guadalajara - K8sGPT first impressionsKuberTENes Birthday Bash Guadalajara - K8sGPT first impressions
KuberTENes Birthday Bash Guadalajara - K8sGPT first impressions
Victor Morales
 
Hybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdf
Hybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdfHybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdf
Hybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdf
fxintegritypublishin
 
Recycled Concrete Aggregate in Construction Part III
Recycled Concrete Aggregate in Construction Part IIIRecycled Concrete Aggregate in Construction Part III
Recycled Concrete Aggregate in Construction Part III
Aditya Rajan Patra
 
Nuclear Power Economics and Structuring 2024
Nuclear Power Economics and Structuring 2024Nuclear Power Economics and Structuring 2024
Nuclear Power Economics and Structuring 2024
Massimo Talia
 
Modelagem de um CSTR com reação endotermica.pdf
Modelagem de um CSTR com reação endotermica.pdfModelagem de um CSTR com reação endotermica.pdf
Modelagem de um CSTR com reação endotermica.pdf
camseq
 
An Approach to Detecting Writing Styles Based on Clustering Techniques
An Approach to Detecting Writing Styles Based on Clustering TechniquesAn Approach to Detecting Writing Styles Based on Clustering Techniques
An Approach to Detecting Writing Styles Based on Clustering Techniques
ambekarshweta25
 
Literature Review Basics and Understanding Reference Management.pptx
Literature Review Basics and Understanding Reference Management.pptxLiterature Review Basics and Understanding Reference Management.pptx
Literature Review Basics and Understanding Reference Management.pptx
Dr Ramhari Poudyal
 
Industrial Training at Shahjalal Fertilizer Company Limited (SFCL)
Industrial Training at Shahjalal Fertilizer Company Limited (SFCL)Industrial Training at Shahjalal Fertilizer Company Limited (SFCL)
Industrial Training at Shahjalal Fertilizer Company Limited (SFCL)
MdTanvirMahtab2
 
一比一原版(SFU毕业证)西蒙菲莎大学毕业证成绩单如何办理
一比一原版(SFU毕业证)西蒙菲莎大学毕业证成绩单如何办理一比一原版(SFU毕业证)西蒙菲莎大学毕业证成绩单如何办理
一比一原版(SFU毕业证)西蒙菲莎大学毕业证成绩单如何办理
bakpo1
 
Swimming pool mechanical components design.pptx
Swimming pool  mechanical components design.pptxSwimming pool  mechanical components design.pptx
Swimming pool mechanical components design.pptx
yokeleetan1
 
一比一原版(IIT毕业证)伊利诺伊理工大学毕业证成绩单专业办理
一比一原版(IIT毕业证)伊利诺伊理工大学毕业证成绩单专业办理一比一原版(IIT毕业证)伊利诺伊理工大学毕业证成绩单专业办理
一比一原版(IIT毕业证)伊利诺伊理工大学毕业证成绩单专业办理
zwunae
 
Building Electrical System Design & Installation
Building Electrical System Design & InstallationBuilding Electrical System Design & Installation
Building Electrical System Design & Installation
symbo111
 

Recently uploaded (20)

Harnessing WebAssembly for Real-time Stateless Streaming Pipelines
Harnessing WebAssembly for Real-time Stateless Streaming PipelinesHarnessing WebAssembly for Real-time Stateless Streaming Pipelines
Harnessing WebAssembly for Real-time Stateless Streaming Pipelines
 
RAT: Retrieval Augmented Thoughts Elicit Context-Aware Reasoning in Long-Hori...
RAT: Retrieval Augmented Thoughts Elicit Context-Aware Reasoning in Long-Hori...RAT: Retrieval Augmented Thoughts Elicit Context-Aware Reasoning in Long-Hori...
RAT: Retrieval Augmented Thoughts Elicit Context-Aware Reasoning in Long-Hori...
 
Heap Sort (SS).ppt FOR ENGINEERING GRADUATES, BCA, MCA, MTECH, BSC STUDENTS
Heap Sort (SS).ppt FOR ENGINEERING GRADUATES, BCA, MCA, MTECH, BSC STUDENTSHeap Sort (SS).ppt FOR ENGINEERING GRADUATES, BCA, MCA, MTECH, BSC STUDENTS
Heap Sort (SS).ppt FOR ENGINEERING GRADUATES, BCA, MCA, MTECH, BSC STUDENTS
 
一比一原版(UofT毕业证)多伦多大学毕业证成绩单如何办理
一比一原版(UofT毕业证)多伦多大学毕业证成绩单如何办理一比一原版(UofT毕业证)多伦多大学毕业证成绩单如何办理
一比一原版(UofT毕业证)多伦多大学毕业证成绩单如何办理
 
Student information management system project report ii.pdf
Student information management system project report ii.pdfStudent information management system project report ii.pdf
Student information management system project report ii.pdf
 
Planning Of Procurement o different goods and services
Planning Of Procurement o different goods and servicesPlanning Of Procurement o different goods and services
Planning Of Procurement o different goods and services
 
Governing Equations for Fundamental Aerodynamics_Anderson2010.pdf
Governing Equations for Fundamental Aerodynamics_Anderson2010.pdfGoverning Equations for Fundamental Aerodynamics_Anderson2010.pdf
Governing Equations for Fundamental Aerodynamics_Anderson2010.pdf
 
Technical Drawings introduction to drawing of prisms
Technical Drawings introduction to drawing of prismsTechnical Drawings introduction to drawing of prisms
Technical Drawings introduction to drawing of prisms
 
KuberTENes Birthday Bash Guadalajara - K8sGPT first impressions
KuberTENes Birthday Bash Guadalajara - K8sGPT first impressionsKuberTENes Birthday Bash Guadalajara - K8sGPT first impressions
KuberTENes Birthday Bash Guadalajara - K8sGPT first impressions
 
Hybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdf
Hybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdfHybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdf
Hybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdf
 
Recycled Concrete Aggregate in Construction Part III
Recycled Concrete Aggregate in Construction Part IIIRecycled Concrete Aggregate in Construction Part III
Recycled Concrete Aggregate in Construction Part III
 
Nuclear Power Economics and Structuring 2024
Nuclear Power Economics and Structuring 2024Nuclear Power Economics and Structuring 2024
Nuclear Power Economics and Structuring 2024
 
Modelagem de um CSTR com reação endotermica.pdf
Modelagem de um CSTR com reação endotermica.pdfModelagem de um CSTR com reação endotermica.pdf
Modelagem de um CSTR com reação endotermica.pdf
 
An Approach to Detecting Writing Styles Based on Clustering Techniques
An Approach to Detecting Writing Styles Based on Clustering TechniquesAn Approach to Detecting Writing Styles Based on Clustering Techniques
An Approach to Detecting Writing Styles Based on Clustering Techniques
 
Literature Review Basics and Understanding Reference Management.pptx
Literature Review Basics and Understanding Reference Management.pptxLiterature Review Basics and Understanding Reference Management.pptx
Literature Review Basics and Understanding Reference Management.pptx
 
Industrial Training at Shahjalal Fertilizer Company Limited (SFCL)
Industrial Training at Shahjalal Fertilizer Company Limited (SFCL)Industrial Training at Shahjalal Fertilizer Company Limited (SFCL)
Industrial Training at Shahjalal Fertilizer Company Limited (SFCL)
 
一比一原版(SFU毕业证)西蒙菲莎大学毕业证成绩单如何办理
一比一原版(SFU毕业证)西蒙菲莎大学毕业证成绩单如何办理一比一原版(SFU毕业证)西蒙菲莎大学毕业证成绩单如何办理
一比一原版(SFU毕业证)西蒙菲莎大学毕业证成绩单如何办理
 
Swimming pool mechanical components design.pptx
Swimming pool  mechanical components design.pptxSwimming pool  mechanical components design.pptx
Swimming pool mechanical components design.pptx
 
一比一原版(IIT毕业证)伊利诺伊理工大学毕业证成绩单专业办理
一比一原版(IIT毕业证)伊利诺伊理工大学毕业证成绩单专业办理一比一原版(IIT毕业证)伊利诺伊理工大学毕业证成绩单专业办理
一比一原版(IIT毕业证)伊利诺伊理工大学毕业证成绩单专业办理
 
Building Electrical System Design & Installation
Building Electrical System Design & InstallationBuilding Electrical System Design & Installation
Building Electrical System Design & Installation
 

Developing appear.in for iOS and Android

Editor's Notes

  1. People were being sent links in FB chat, sms, email etc. and reading this on their iOS device WebRTC not supported in native web browser – nor in other browsers. (iOS Chrome, Opera is just a skin on native browser) Need to develop native app to be able to communicate with video on iOS Additionally: wanted to enable people to contact others. iOS native notifications is a powerful way to do so.
  2. - Started in January 2014 Initial implementation: just took the AppRTC demo compiled for iOS, tore it apart and adapted it to work with the server implementation of appear.in The AppRTC demo application contains Objective-C wrapper classes that wraps the core WebRTC library calls. The easiest way to build a new application is just to start with these wrapper classes. Used an externally provided socket.io library for iOS to realize server communication. Later moved to an CocoaPod for WebRTC provided by pristine.io. This removes the need for constantly recompliling the WebRTC library yourself.
  3. Initially, we experienced that WebRTC communication from iOS worked in only one out of four cases The AppRTC demo does some SDP mangling, especially with regards to audio codec, preferring ISAC over OPUS. Possible due to resource constrains, but not really well explained anywhere. We have chosen to inherit these. The need to build AppRTC demo to get the Objective-C wrapper classes can result in dependency problems. I.e. AppRTC uses SocketRocket third party library. We also use this library in appear.in, with the result of linking problems due to the same library being included twice. Starting from Firefox 38, that browser will require Perfect Forward Secrecy. This is not supported in the CocoaPod built by pristine.io because it is linked towards NSS and not OpenSSL. This will break our connectivity between iOS and Firefox. To fix it, we have to go back to compiling ourselves. Pristine has said they won’t change the linking – probably because connectivity with browsers is not a priority for them.
  4. Why? Also did a mobile web version, but wanted access to contact list and send notifications. Also: get an icon on the home screen! Started from AppRTC demo Quicker than iOS, mostly because of experiences with developing iOS app. Uses a JNI interface towards the native WebRTC library. Also contains a Java-side wrapper library that realizes things such as screen rendering of video streams. Currently use an automated build of the WebRTC library offered by the guys at pristine.io
  5. The feed UI is really only suitable for the AppRTC demo. It does not work well for the case with multiple video feeds for example. Issue, only working in Nexus: Nexus has support for hardware decoding. WebRTC wrote code that would only work on Nexus devices. Working on HTC One, asked to reproduce in AppRTC code - many days of work. We can reproduce it ; they said we cant reproduce it, can you do some more figuring out. Eventually someone else found the issue. Then they asked can you figure out in which commit this started. The other guy said it does work on a Nexus, but not the other device.  The issue had been there in a couple of weeks. Did not make it into the pristine.io build. Now, the state of building is much better. Can now include the latest library based on commit. Quicker to spot bugs now. Can now use more recent versions of the library from pristine.io Kept crashing - crashes a lot and it’s hard to know why. It has to do with the way objects are cleaned. RTCPeerConnection.dispose() in Java might segfault, because it might already have been cleaned up in C-land. Solution: not call dispose(), only call close().  We don’t know the right thing to do, because there is little documentation. 9 out of 10 dispose() will crash the app. - don’t do it.  Don’t do it, then WebRTC developers marks it as fixed.
  6. There is current little documentation for the libraries on Android and iOS. You basically have to look into the code and try to understand what it does. Unsure if WebRTC does its own QA for the code it produces. Users must be prepared to do QA, not only for their own code, but also for the WebRTC code. Currently high maintenance: things will break with new versions of the library, new versions of browsers etc.
  7. - But rapidly improving