Sharp.Xmpp, a multiplatform.net XMPP client library, and Android



Similar documents
Google Developer Group Perugia DevFest Central Rome

GCM for Android Setup Guide

The power of root on Android emulators

Jive Connects for Openfire

Building native mobile apps for Digital Factory

Evaluation of Xamarin Forms for MultiPlatform Mobile Application Development

Introduction to Android Development. Jeff Avery CS349, Mar 2013

DevOps Best Practices for Mobile Apps. Sanjeev Sharma IBM Software Group

Trepn plug-in for Eclipse FAQ

Maxis BizVoice For iphone User Guide. Version 1.0

Access to This Tutorial. What is XMPP. Ozgur Ozturk's Introduction to XMPP 1

ITG Software Engineering

Deploying Management and Security Agents to Mobile Devices. Deploying Mgmt and Security Agents

Developing and deploying mobile apps

SDN AND SECURITY: Why Take Over the Hosts When You Can Take Over the Network

Administering Jive Mobile Apps

Frequently Asked Questions. Troubleshooting

ni.com Remote Connectivity with LabVIEW

GCM GOOGLE CLOUD MESSAGING

OPC UA App development for Android

Connecting your Aiki phone to a network

Example of Standard API

Cloud Attached Storage 5.0

SafeMobile, Inc E. Algonquin Road, Rolling Meadows, IL Tel: (847) Fax: (847)

Medstar Health Dell Services

Android Operating System:

Cross-Platform Mobile Apps Solution

Seagate Business Storage 8-bay Rackmount NAS Reviewer s Guide

District of Columbia Courts Attachment 1 Video Conference Bridge Infrastructure Equipment Performance Specification

UNIVERSITY AUTHORISED EDUCATION PARTNER (WDP)

AppConnect FAQ for MobileIron Technology Partners! AppConnect Overview

Configuration Guide. BlackBerry Enterprise Service 12. Version 12.0

Your guide to building great apps. Upgrade your skills and update your tools to create the next great app

NAS 242 Using AiMaster on Your Mobile Devices

Publishing to TIZEN Using the Automated Conversion/Repackaging of Existing Android Apps. Hyeokgon Ryu, Infraware Technology, Ltd.

Open Source Telemedicine Android Client Development Introduction

Company Profile TeamDev Ltd.

How To Develop A Mobile App With Phonegap

Making Mobile a Reality

ios SDK possibilities & limitations

Graduate presentation for CSCI By Janakiram Vantipalli ( Janakiram.vantipalli@colorado.edu )

Configuration Guide BES12. Version 12.1

Value Added Services (VAS) - Mobile Applications Business Cases

INTERMEDIATE ANDROID DEVELOPMENT Course Syllabus

REQUIREMENTS LIVEBOX.

Out of the office? Not out of touch! The basics of internet telephony By Neil G. Oberman., LL.M. Spiegel Sohmer Inc.

5 Secrets to a Successful Mobile Application Testing Strategy

Affiliate Marketing for Mobile Apps. Peter Hamilton Partner / CMO peter@hasoffers.com #AMDays

Troubleshooting BlackBerry Enterprise Service 10 version Instructor Manual

Software Product Information. Faba5 Website

ANDROID BASED MOBILE APPLICATION DEVELOPMENT and its SECURITY

This is our best... YOUR best... Online Banking yet!

Integrating Mobile into Your Cross- Platform Strategy with Qt

Lecture 17: Mobile Computing Platforms: Android. Mythili Vutukuru CS 653 Spring 2014 March 24, Monday

New Features in XE8. Marco Cantù RAD Studio Product Manager

Deployment Guide July-2014 rev. a. Deploying Array Networks APV Series Application Delivery Controllers for Microsoft Lync Server 2013

Aqua Connect Load Balancer User Manual (Mac)

Mobile Communicator for Mobile Devices

Configuration Guide BES12. Version 12.2

Rich Communication Suite Enabler. plus integration with your existing VoIP services

Secure , Calendar, Contacts, Tasks, File sharing and Notes across devices

A Way Out of the Mobile App Development Conundrum

Building Apps for iphone and ipad. Presented by Ryan Hope, Sumeet Singh

BLOOMBERG ANYWHERE FOR MOBILE CUSTOMERS

Mobile App Testing Process INFLECTICA TECHNOLOGIES (P) LTD

Zoho Projects. Social collaborative project management platform

Dell World Software User Forum 2013

What We Learned From Porting 50+ Cloud Apps to Tizen. Dima Malenko, Vlad Pavlov, rollapp Inc.

RTC:engine. WebRTC SOLUTION SIPWISE AND DEUTSCHE TELEKOM / TLABS ANNOUNCE COOPERATION FOR THE

Best practices building multi-platform apps. John Hasthorpe & Josh Venman

KonyOne Server Prerequisites _ MS SQL Server

Google Cloud Print Administrator Configuration Guide

Seagate NAS OS 4 Reviewers Guide: NAS / NAS Pro / Business Storage Rackmounts

Dial91 Android Edition User Guide

ABC SBC: Mobile Subscriber Support. FRAFOS GmbH

A Short Introduction to Android

Технологии Java. Android: Введение. Кузнецов Андрей Николаевич. Санкт-Петербургский Государственный Политехнический Университет

Developing Android Apps for BlackBerry 10. JAM 354 Matthew Whiteman - Product Manager February 6, 2013

MOBILITY. Transforming the mobile device from a security liability into a business asset. pingidentity.com

slides at goo.gl/kifue

Service Providers and WebRTC

VIA CONNECT PRO Deployment Guide

Android Architecture. Alexandra Harrison & Jake Saxton

MOBILE MICROAPPS. The shortest path to enterprise mobility

Mobile and Social Computing

Mobile Development Frameworks Overview. Understand the pros and cons of using different mobile development frameworks for mobile projects.

AkrutoSync 4.0 User Guide

RFP# ADDENDUM No. 1 Questions and Answers

Transcription:

, a multiplatform.net XMPP client library, and Android Panagiotis (Takis) Stathopoulos https://twitter.com/panstath http://pgstath.me Presentation supported by the Greek Free/Open Source Software Society

Outline Part A: https://github.com/pgstath/ C#. Net multiplatform client XMPP library Fork of S22.Xmpp MIT License Part B: Android, Xamarin, and XMPP Tips, tricks and code for long running XMPP sessions and background TCP connections

Why Xamarin and C# Why XMPP? Why yet another XMPP library?

Background mainly developed for use by Momentum.IM: Small-scale social networking app over XMPP Android/Windows/Linux App centric not web centric Check Georgia's presentation at Indie Summit: https://youtu.be/n7ap6htjulk

Why C# & Xamarin? A controversial subject but: Built native apps in: Android Windows (and Linux) aka the most widespread desktop and mobile platforms Client centric and not server centric technologies/app. Comes with a cost Mostly good (but not perfect) support of third party libraries

Why XMPP? Required a message distribution protocol: Presence, subscription, message routing, etc. Secure, Private. OTR support was must have. No centralized control of messaging infrastructure e.g. like: Google Cloud Messaging or Apple Messaging Service or closed browser specific technologies. Capacity to run your own messaging server Provide an app not a service No need of any of IM specific functionality, but: XMPP is not only for chat/messaging apps

Why yet another library? Modern technologies Clean and easy to extend MIT Licensed for most flexibility And finally: Not so many C# libraries available

What's on the roadmap https://github.com/pgstath/ So far: Improved disconnection detection, vcard Avatars support, DNS queries, port to Xamarin, bug fixes, etc. Third party has already added: Message Carbons, Archive management, basic MUC, etc. Will integrate in a next version Next step: OTR support.

Part B': XMPP, Android and Xamarin Android hates long running listening background TCP connections Or background tasks Mobile OS with limited resources: Kill Activities/Services on every opportunity Independent from implementation of XEP-0198 stream management Already some good presentations by Smack during previous years Provide Xamarin/C# perspective And a full sample project

Show me the code https://github.com/pgstath/sharpxmppdemo pgstath.me and codeproject article coming just after FOSDEM2016 Also check related XMPP resources http:bit.ly/1qmjs5n: Securely register users from mobile app Long running background process

Components A Sticky Android service With Intent Service like API. Periodic (inexact) Android Alarms Wakelocks and WakefulBroadcastReceivers Network connectivity monitoring events XMPP features: Ping Server ping before disconnection

Sticky Intent-like Service Place your XMPP connection object in a StickyIntentService XMPP must be placed in a Sticky Service, listening TCP connection even if no work is done. Provide StickyIntentService A class with an IntentService compatible API & START_STICKY behavior The simple Intent Service is not Sticky See http://bit.ly/1pzv1er for details

Alarms, Wakeful Receivers and Wakelocks Set an inexact Android Alarm Ping, to keep connection alive, or connect if network is present. Wakeful Broadcast Alarm receiver OS might sleep even before connection is made Wakelocks are a mechanism to prevent OS from sleeping Required for Alarm Broadcast receivers Long running tasks, e.g. receiving a file transfer

Network monitoring, built in XMPP Make use of Android network connectivity events Set broadcast receivers Make use of built in XMPP features: XMPP ping when an alarm is fired Server side ping before disconnection Results for 15min alarms: Very low battery background usage, e.g. % Persistent network connection Easily pushing messages, with out XEP push notifications!

SharpXmppDemo Classes BackgroundService, StickyIntentService, Utils SharpComms & IUIThreadDispatcher, multiplatform wrappers: Detecting and managing reconnection timers Wakelocks Debug messages Run actions on the UI Thread

Next Steps SharpXmppDemo as a separate library? Future announcements about: Middleware for end point controlled messages replication (provisional name: TrustVillageNet) Store or replicate nothing in the server! Minimize assumptions about server functionality!

Thank you, stay tuned at: https://github.com/pgstath