Built a container application using Xamarin, for the client, K4 Connect , which helped its customers to use their existing familiar user interface across all their devices, both mobile and desktop.
Client Overview
K4 Connect is a technology company, based out of Raleigh, NC, provide solutions that serve and empower older adults and individuals living with disabilities, enhancing their lives by integrating the latest in smart technologies into a single responsive system.
Business Objective
Building a container application that will allow K4 Connect customers to use their existing familiar user interface across all their devices, both mobile and desktop
Solution
Create a hybrid webview app using Xamarin for mobile and desktop platforms including a websocket based API for accessing underlying platform features
Result
Successfully built an application using Xamarin that runs on multiple platforms that users can use to control various devices around their homes.
Deliverables
Single Xamarin solution that includes application on four platforms
○ iOS
○ Android
○ MacOS
○ Windows
Desktop installer packages for Windows and MacOS
Unit tests for all bridge API commands
Web page to demonstrate each bridge API command
Web Browser
The application should load to a full screen browser
○ iOS – WKWebview
○ Android – native Chrome webview
○ MacOS / Windows – Chrome Embedded Framework as embedded process
Webview should support WebRTC natively
○ WKWebView requires a shim
Webview should inject custom K4Connect CA public cert for network requests
○ Resources
○ AJAX
○ Websockets (WSS)
Application should inspect outbound resource requests (image loading, etc) and if file is available in a designated local content cache directory, intercept the request and return it to the webview
What Insight Consultants did:
The application was implemented using a WebView inside the Xamarin shell. The WebView communicated with a web socket server (part of the same application) that invoked native code to perform operations like using the Camera, accessing the file system, push notifications, serial ports, alarms, local storage using SQLite etc. We were responsible for writing this native code that the web socket server communicated with. The tasks involved studying and implementing operating system specific APIs and testing on multiple devices.