private async Task ProcessPendingActionsOrSaveMessage(SimplePushMessage message)
		{
			// Do we have any pending actions for this message?
			var pendingAction = await _pushDataContext.MessageInteractions.GetAsync(message.MessageId);
			if (pendingAction != null)
			{
				Logger.Instance.LogInformation("Found pending action of {0} for message {1}", 
					pendingAction.UserAction, message.MessageId);
				await _pushDataContext.MessageInteractions.DeleteAsync(pendingAction.Id);

				await SendInteractionResultAsync(message, pendingAction.InteractionType,
					pendingAction.ButtonDescription, pendingAction.UserAction, pendingAction.InteractionTime);
			}
			else
			{
				// Store the message for later
				await _pushDataContext.SimplePushMessages.AddOrUpdateAsync(new PendingSimplePushMessage
				{
					Id = message.MessageId,
					Message = message
				});
			}

			await _pushDataContext.SaveChangesAsync();
		}
		private static PendingIntent CreateIntentForAction(Context context, int nativeNotificationId,
			string donkyNotificationId, ButtonSetAction action, SimplePushMessage message, ButtonSet buttonSet)
		{
			var serialiser = DonkyCore.Instance.GetService<IJsonSerialiser>();
			var intent = new Intent(context, typeof(PushActionIntentService));
			if (Build.VERSION.SdkInt >= BuildVersionCodes.HoneycombMr1)
			{
				intent.AddFlags(ActivityFlags.IncludeStoppedPackages);
			}

			intent.PutExtra(DonkyAndroid.DonkyNotificationId, donkyNotificationId);
			intent.PutExtra(PushActionIntentService.NativeNotificationId, nativeNotificationId);
			intent.PutExtra(PushActionIntentService.ButtonActionData, action.Data);
			intent.PutExtra(PushActionIntentService.Message, serialiser.Serialise(message));
			intent.PutExtra(PushActionIntentService.ButtonSet, serialiser.Serialise(buttonSet));
			switch (action.ActionType)
			{
				case "Open":
					intent.SetAction(PushActionIntentService.OpenAction);
					intent.PutExtra(PushActionIntentService.UserAction, "Button" + (buttonSet.ButtonSetActions.IndexOf(action) + 1));
					break;

				case "DeepLink":
					intent.SetAction(PushActionIntentService.DeepLinkAction);
					intent.PutExtra(PushActionIntentService.UserAction, "Button" + (buttonSet.ButtonSetActions.IndexOf(action) + 1));
					break;

				case "Dismiss":
					intent.SetAction(PushActionIntentService.CancelAction);
					intent.PutExtra(PushActionIntentService.UserAction, "Dismissed");
					break;
			}
			
			var pendingIndentId = new Random().Next(Int32.MaxValue);
			return PendingIntent.GetService(context, pendingIndentId, intent, PendingIntentFlags.UpdateCurrent);
		}