Skip to content

Latest commit

 

History

History
65 lines (42 loc) · 1.67 KB

File metadata and controls

65 lines (42 loc) · 1.67 KB

@startuml

title "Push Notification Enrollment"

hide footbox autonumber "[0] "

participant "Client App" as Client << (U, #ccebc5) user >>

participant "Orchestration Layer" as Orch << (C, #b3cde3) capital one >> participant "Messaging Server" as MS << (C, #b3cde3) capital one >> note over MS This is where you can put useful information like links to documentation or support processes. end note

participant "Notification Subscription Server" as NSS << (C, #b3cde3) capital one >>

participant "APNS" as APNS << (E, #fbb4ae) external >> participant "GCM" as GCM << (E, #fbb4ae) external >>

==Customer Action==

Client → Client: First time login, or app upgrade, or user toggles notifications on/off in the app.

==Device Registration==

Client → APNS: If iOS, register device token in APNS Client → GCM: If Android, register device token in GCM

==Update Messaging Server==

Client → Orch: Update device token

Orch → MS: Get existing subscriptions MS → Orch: If success, return all Orch → Orch: Check if device token is present

Orch → MS: If device token is present, stop (skip to next group)

Orch → MS: If device token not present, add subscription note left { "device_token" : "APA91bE_YiasYasbda…​" } end note MS → Orch: Return success/failure

==Update Master Subscription==

Orch → NSS: Register device token NSS → Orch: Return success/failure

Orch → Orch: Swallow failure Orch → Client: Return success/failure

==Replicate Subscriptions==

Client → Orch: Update subscriptions Orch → MS: Update subscriptions

MS → MS: Update subscription in Messaging Server

MS → Orch: Return success/failure Orch → Orch: Swallow failure Orch → Client: Return success/failure

@enduml