目前,如果我們想將設備添加到使用SNS應用:AWS博託SNS - 通過設備令牌獲得endpoint_arn
ep = SNSConnection.create_platform_endpoint(app_arn,device_token,user_data)
有該設備在過去已添加的選項。 要驗證設備是否已添加,我們使用:
def is_device_registered(device_token):
list_of_endpoints = SNSConnection.list_endpoints_by_platform_application(AC.INPLAY_CHAT_APPLICATION_SNS_ARN)
all_app_endpoints = list_of_endpoints['ListEndpointsByPlatformApplicationResponse']['ListEndpointsByPlatformApplicationResult']['Endpoints']
for ep in all_app_endpoints:
ep_device_token = ep['Attributes']['Token']
if device_token == ep_device_token:
endpoint_arn = ep['EndpointArn']
print 'Found an endpoint for device_token: %s, entry:%s' % (device_token,endpoint_arn)
return endpoint_arn
return None
這是非常低效,不能縮放。
是否有boto sns函數獲取device_token並返回endpoint_arn(如果存在)? (如果不是)。
嘿阿米特 - 你有沒有找到最好的方法來處理這個問題?您是否存儲端點arn或每次使用該令牌查找它?回答你自己的問題,如果你找到了「正確」的方式來做到這一點 – HarrisonJackson
我們可以選擇將它存儲在DB/Redis中,但由於數據存儲在AWS SNS中,我們認爲從那裏檢索它是有用的使用API(boto在這種情況下) –