I think this is look really good!
Here some thoughts, and/or possible additional use-cases
* How do we want to handle multiple devices for one user?
* How do we want to handle the other side of unified push (non-native)?
** Might just not be there yet, but want to make sure we're still thinking the same thing :-)
** Would there be an additional abstraction above this for that?
* I'm assuming there is no good way for apps to notify you when they are uninstalled?
** As a way of removing clutter in our tables.
* Push filtering - I would think IDM would be very good here.
** Sending to roles, groups, etc...
** When we store the device and app info what sub-system are you thinking?
*** I know you were using mongo for some of the prototyping
*** Would be possible to abstract to the IDM?