/// <summary>
        /// Register a particular deviceId
        /// </summary>
        /// <param name="deviceId">The deviceId to register</param>
        /// <param name="tags">The tags to register to receive notifications from</param>
        /// <returns>Task that completes when registration is complete</returns>
        public Task RegisterNativeAsync(string deviceId, IEnumerable<string> tags)
        {
            if (string.IsNullOrWhiteSpace(deviceId))
            {
                throw new ArgumentNullException("deviceId");
            }

            var registration = new GcmRegistration(deviceId, tags);
            return this.RegistrationManager.RegisterAsync(registration);
        } 
        /// <summary>
        /// Register a particular deviceId
        /// </summary>
        /// <param name="deviceId">The deviceId to register</param>
        /// <param name="tags">The tags to register to receive notifications from</param>
        /// <returns>Task that completes when registration is complete</returns>
        public Task RegisterNativeAsync(string deviceId, IEnumerable <string> tags)
        {
            if (string.IsNullOrWhiteSpace(deviceId))
            {
                throw new ArgumentNullException("deviceId");
            }

            var registration = new GcmRegistration(deviceId, tags);

            return(this.RegistrationManager.RegisterAsync(registration));
        }