Skip to content

Telephony will be a xplat library that provides email, sms, voice and video call functionality. Supports Xamarin.iOS, Xamarin.Android, Windows Phone 8/8.1 (Silverlight and WPA)

ghuntley/telephony

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

39 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Telephony

Join the chat at https://gitter.im/ghuntley/telephony

Telephony will be a xplat library that provides email, sms, voice and video call functionality.

Supported Platforms

  • Xamarin.iOS
  • Xamarin.Android
  • Windows Phone 8/8.1 (Silverlight)
  • Windows Phone 8.1 (WPA)

Installation

Installation is done via NuGet:

Install-Package Telephony

Usage

Within your core library:

using Telephony;
using ReactiveUI;
using Conditions;

public ReactiveCommand<string> DialPhoneNumber { get; private set; }
public ReactiveCommand<string> ComposeMessage { get; private set; }
private readonly _telephony;

ExampleViewModel(ITelephony telephony)
{
	// Cool stuff: Conditions is cross platform portable class library helps
	// developers to write pre- and postcondition validations in a fluent
    // manner. Usage is completely optional and this is here to act as a
    // safety step/tear down the house if you forget to register an
    // implementation of the TelephoneyService<T> 
    Condition.Requires(telephone).IsNotNull();
    
    _telephony = telephony;
    
    // ReactiveUI is completely optional but you totally should be using it
    // as once you experience building a mobile application declaratively
    // using the Reactive Extensions theres no going back. 
    DialPhoneNumber = ReactiveCommand.Create();
   	
   	DialPhoneNumber.Subscribe(phoneNumber => 
   	{
   		// This is telephony, choose between either video or voice.
   		_telephony.MakePhoneCall(phoneNumber);
   		_telephony.MakeVideoCall(phoneNumber);
   	});
   	
	DialPhoneNumber.ThrownExceptions
        .Subscribe(ex => {
            UserError.Throw("Is Airplane mode enabled?", ex);
    });

    // ReactiveUI is completely optional but you totally should be using it
    // as once you experience building a mobile application declaratively
    // using the Reactive Extensions theres no going back. 
    ComposeMessage = ReactiveCommand.Create();
   	
   	ComposeMessage.Subscribe(phoneNumber => 
   	{
   		// This is telephony, choose between either SMS or email.
   		_telephony.ComposeSMS(phoneNumber);
   		_telephony.ComposeEmail(new Email("hello@contoso.com, hello@adventure-works.com"));
   	});
   	
	ComposeMessage.ThrownExceptions
        .Subscribe(ex => {
            UserError.Throw("Is messaging enabled and are there accounts configured?", ex);
    });
}

Within the application initialization for each platform:

container.Register(c => new TelephonyService()).As<ITelephonyService>();

With thanks to

About

Telephony will be a xplat library that provides email, sms, voice and video call functionality. Supports Xamarin.iOS, Xamarin.Android, Windows Phone 8/8.1 (Silverlight and WPA)

Resources

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

 

Packages

No packages published

Languages