По идее флаг нужно убирать при NotRegistered однозначно. При инвалидской регистрации тоже.
Лучше пользоваться не http интерфейсом Firebase, а XMPP, там, насколько я знаю, можно получать всю инфу, вплоть до подтверждения получения пуша клиентом.
В скрипте и не отправляются сообщения на не активные токены, по крайней мере у меня, зачем? В SQL запросе "WHERE active = 1" решает проблему.
P.S. Надо задуматься над коммерческим PUSH сервером ;-) Площадок у меня есть, голова и руки тоже. Сделать по 50 рублей в месяц подписку. Чтоб зашел, зарегился, вбил свои данные и создавай push проекты, отправляй, получай и все такое...