2016-10-21 1 views
0

J'utilise amazon sns mobile push pour envoyer des notifications push.Pour enregistrer le jeton de périphérique avec amazon, j'utilise le CreatePlatformEndpoint.Amazon sns mobile push CreatePlatformEndpoint crée plusieurs points de terminaison avec le même jeton et les données utilisateur

Selon la documentation amazone (http://docs.aws.amazon.com/sns/latest/api/API_CreatePlatformEndpoint.html):

L'action CreatePlatformEndpoint est idempotent, donc si le demandeur possède déjà un point final avec le même dispositif de jeton et les attributs, est retourné le ARN de ce point d'extrémité sans créer un nouveau point de terminaison. Mais lorsque j'utilise le CreatePlatformEndpoint, je peux enregistrer le même jeton avec les mêmes attributs (données utilisateur) plusieurs fois (jusqu'à 3 fois). Pas capable de comprendre ce comportement.

Répondre

0

chetna bhandari,

J'avais ce problème. J'ai une application plate-forme pour iOS (APNS) et une autre pour Android (GCM). Pour iOS, la méthode createPlatformEndpoint fonctionne correctement. Mais pour Android, crée plusieurs points de terminaison (jusqu'à 3, tout comme vous) avec le même jeton. La prochaine fois que j'ai essayé d'utiliser createPlatformEndpoint, déclenche une exception.

La façon correcte de procéder est de stocker le point de terminaison dans votre application. Si ce n'est pas encore stocké, créez et stockez.

Ensuite, le pseudo-code est:

retrieve the latest device token from the mobile operating system 
if (the platform endpoint ARN is not stored) 
    # this is a first-time registration 
    call create platform endpoint 
    store the returned platform endpoint ARN 
endif 

call get endpoint attributes on the platform endpoint ARN 

if (while getting the attributes a not-found exception is thrown) 
    # the platform endpoint was deleted 
    call create platform endpoint with the latest device token 
    store the returned platform endpoint ARN 
else 
    if (the device token in the endpoint does not match the latest one) or 
     (get endpoint attributes shows the endpoint as disabled) 
    call set endpoint attributes to set the latest device token and then 
enable the platform endpoint 
    endif 
endif 

Vous pouvez le voir dans ce lien: Create a Platform Endpoint and Manage Device Tokens