2015-02-18 3 views
1

Я пытаюсь отправить push-сообщения на iphones, используя SNS и Boto (python).AWS Boto SNS недопустимое имя темы параметра

Код работает нормально, когда я устанавливаю обычную тему SNS для публикации (заменяя устройство = 'xxx' ниже), но когда я заменяю arn на приложение или устройство, зарегистрированное в этом приложении, он жалуется на следующее :

boto.exception.BotoServerError: BotoServerError: 400 Bad Request 
{"Error":{"Code":"InvalidParameter","Message":"Invalid parameter: Topic Name","Type":"Sender"},"RequestId":"ee1fa01c-3b01-52be-9ca2-ed42c6748e40"} 

Проблема в том, что у меня даже нет параметра, который называется названием темы. Документация boto на странице http://boto.readthedocs.org/en/latest/ref/sns.html раздел о публикации - одна из худших документов, которые я когда-либо видел. Кто-нибудь читал это вообще?

код выглядит следующим образом:

from boto.sns import connect_to_region 

AWS_KEY = '--REMOVED--' 
AWS_SECRET = '--REMOVED--' 

def push(subject, message, device = u'arn:aws:sns:eu-west-1:606448161548:app/APNS_SANDBOX/SkygdIphone'): 
    c = connect_to_region('eu-west-1', aws_access_key_id = AWS_KEY, aws_secret_access_key = AWS_SECRET) 

    c.publish(
     device, 
     message, 
     subject) 

push('subject', 'message') 

Любые предложения, я стучал голову этого в настоящее время в течение некоторого времени.

ответ

2

Я думаю, проблема в том, что вы полагаетесь на порядок параметров на метод publish, и они не то, что вы ожидаете.

Вместо этого, попробуйте следующее:

c.publish(message=message, subject=subject, target_arn=device) 

и посмотреть, если вы получите лучшие результаты.

+1

Спасибо, что на самом деле имело смысл, после некоторого дополнительного рытья я понял, что существует разница между «topic_arn» и «target_arn» в отношении того, к каким конечным точкам можно отправить. Для мобильного push вам нужно отправить «target_arn» и с обычными темами SNS, которые вы отправляете с «topic_arn». Также представляется невозможным прямое обращение к приложению мобильного приложения (для установки на все его устройства). – DavKa

+0

спасибо, я боролся с документацией на boto для python. Все было правильно, но «message = *, subject = *, target_arn = *» .. не знал, что это нужно решать так. спасибо, ребята, очень! :-) – Zuop

Смежные вопросы