Skip to content

ryanherman/Xamarin.Plugins.AWS.SNS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

The beginning of my first nuget package!

Installation

Xamarin.SNS.Plugin!

Xamarin.SNS.Plugin is an easy to use NuGet package to get AWS SNS up and running quickly!

Install

Android:

You will need to modify your Manifest file to include certain permissions, here is a sample. Make sure you change all the <app.namespace> to yours.

   `<?xml version="1.0" encoding="utf-8"?>
	<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="<app.namespace>" android:installLocation="auto" android:versionName="" android:versionCode="1">
	<uses-sdk android:targetSdkVersion="23" android:minSdkVersion="16" />
	<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
	<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
	<uses-permission android:name="android.permission.INTERNET" />
	<uses-permission android:name="android.permission.MEDIA_CONTENT_CONTROL" />
	<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
	<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
	<uses-permission android:name="android.permission.CAMERA" />
	<uses-permission android:name="android.permission.WAKE_LOCK" />
	<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
	<uses-permission android:name="com.google.android.c2dm.permission.REGISTER" />
	<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
	<permission android:name="<app.namespace>.permission.C2D_MESSAGE" android:protectionLevel="signature" />
	<uses-permission android:name="<app.namespace>.permission.C2D_MESSAGE" />
	<!-- Receiver GCM -->
	<receiver android:name="<app.namespace>.GcmBroadcastReceiver" android:permission="com.google.android.c2dm.permission.SEND">
		<intent-filter>
			<action android:name="com.google.android.c2dm.intent.RECEIVE" />
			<category android:name="<app.namespace>" />
		</intent-filter>
	</receiver>
	<!-- Service GCM -->
	<service android:exported="true" android:name="<app.namespace>.GcmIntentService" />
</manifest>`

IOS:

You will need to ask the user to authorize push messaging so in your FinishLaunching in your AppDelegate.cs add:

        `if (UIDevice.CurrentDevice.CheckSystemVersion(8, 0))
        {
            var settings = UIUserNotificationSettings.GetSettingsForTypes(UIUserNotificationType.Sound |
                                       UIUserNotificationType.Alert | UIUserNotificationType.Badge, null);

            UIApplication.SharedApplication.RegisterUserNotificationSettings(settings);
            UIApplication.SharedApplication.RegisterForRemoteNotifications();
        }
        else
        {
            UIApplication.SharedApplication.RegisterForRemoteNotificationTypes(UIRemoteNotificationType.Badge |
                                                                     UIRemoteNotificationType.Sound | UIRemoteNotificationType.Alert);
        }`

Then you will need to handle the push messaging on messages coming in, registration, and errors:

`public override void RegisteredForRemoteNotifications(UIApplication application, NSData token)
    {
        var deviceToken = token.Description.Replace("<", "").Replace(">", "").Replace(" ", "");
        if (!string.IsNullOrEmpty(deviceToken))
        {
            SNSUtils.RegisterDevice(SNSUtils.Platform.IOS, deviceToken);
        }
    }

    public override void DidReceiveRemoteNotification(UIApplication application, NSDictionary userInfo, Action<UIBackgroundFetchResult> completionHandler)
    {
        var payload = DictionaryToJson(userInfo);
        SNSUtils.HandleMessage(payload);
    }

    private static string DictionaryToJson(NSDictionary dictionary)
    {
        NSError error;
        var json = NSJsonSerialization.Serialize(dictionary, NSJsonWritingOptions.PrettyPrinted, out error);

        return json.ToString(NSStringEncoding.UTF8);
    }

    public override void FailedToRegisterForRemoteNotifications(UIApplication application, NSError error)
    {
        Console.WriteLine(@"Failed to register for remote notification {0}", error.Description);
    }`

License

MIT

About

A Xamarin plugin to assist with AWS SNS Push Notifications

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages