ruby – 如何检查移动设备是否已注册

前端之家收集整理的这篇文章主要介绍了ruby – 如何检查移动设备是否已注册前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用适用于Amazon SNS的Amazon AWS Ruby SDK,但我在使用已经注册的设备时遇到了一些问题.有时当设备再次注册时,我收到类似AWS :: SNS :: Errors :: InvalidParameter的错误无效参数:令牌原因:端点arn:aws:sns:us-east-1:****已经存在且具有相同的令牌,但不同的属性..如何检查端点是否已存在,更重要的是,如何获取给定令牌的端点?

解决方法

感谢BvdBijl的想法,我做了一个扩展方法,删除现有的一个,如果找到,然后添加它.
using System;
using System.Text.RegularExpressions;
using Amazon.SimpleNotificationService;
using Amazon.SimpleNotificationService.Model;

namespace Amazon.SimpleNotificationService
{
    public static class AmazonSimpleNotificationServiceClientExtensions
    {
        private const string existingEndpointRegexString = "Reason: Endpoint (.+) already exists with the same Token";
        private static Regex existingEndpointRegex = new Regex(existingEndpointRegexString);
        public static CreatePlatformEndpointResponse CreatePlatformEndpointIdempotent(
            this AmazonSimpleNotificationServiceClient client,CreatePlatformEndpointRequest request)
        {
            try
            {
                var result = client.CreatePlatformEndpoint(request);
                return result;
            }
            catch (AmazonSimpleNotificationServiceException e)
            {
                if (e.ErrorCode == "InvalidParameter")
                {
                    var match = existingEndpointRegex.Match(e.Message);
                    if (match.Success) {
                        string arn = match.Groups[1].Value;
                        client.DeleteEndpoint(new DeleteEndpointRequest
                        {
                             EndpointArn = arn,});
                        return client.CreatePlatformEndpoint(request);
                    }
                }
                throw;
            }
        }
    }
}
原文链接:https://www.f2er.com/ruby/270660.html

猜你在找的Ruby相关文章