Hi all, I make an XMPP app on iOS called Monal. Much of my comments are based on my experiences developing an XMPP client on iOS for the past 6 years. My concerns may be Apple specific in some places but since the intent of the XEP is for a very general implementation, these issues should be considered. Apologies for resurrecting this discussion.
The proposed XEP does not seem to address token expiration. On Apple platforms (and likely others) the push token will change periodically. This information is provided on a feedback channel to the App server but there is no way for it to communicate this to the XMPP server. There is really no way for the client to know it’s token has expired so It will not know to request a new one from the push service and the messages will just be lost. In addition even if the client were to somehow know, there doesn't seem to be a way for the client to refresh its token with the XMPP server. It may also be nice if the client could define what events it cared about. Most mobile clients are probably not going to care much about anything other than ping and message stanzas when operating in the background. There would be significant battery life improvements if a client could take advantage of XEP-0198 (with a very long expiration) to close the socket unless a message or ping arrived. While XEP-0198 is probably beyond the scope of this document, it’s probably how I and others will try to use push, so it may warrant mentioning. Thanks, -Anu
