Мы, к примеру, используем pubnub. При логине на устройстве, sdk обмениеваеться с сервером информацией о пользователе и подписывает устройство на канал. В этот канал пушаться сообщения с тегами для IOS и андроид девайсов. Можно реализовать и на основе токенов.
Бытует поверье, что класс должен проектироваться под наследование, поэтому легче их делать final, а при необходимости наследования проектировать соответственно и убирать final.