@@ -239,7 +239,7 @@ void NotifyListenerSet(Listener* listener) {
239239 g_launch_notification = nil ;
240240 }
241241 });
242- return RequestPermissionLastResult ( );
242+ return MakeFuture (api, g_permission_prompt_future_handle );
243243}
244244
245245Future<void > RequestPermissionLastResult () {
@@ -620,6 +620,9 @@ void Send(const Message &message) {
620620 timeToLive: message.time_to_live];
621621}
622622
623+ static const char kErrorMessageNoRegistrationToken [] =
624+ " Cannot update subscritption when SetTokenRegistrationOnInitEnabled is set to false" ;
625+
623626Future<void > Subscribe (const char *topic) {
624627 FIREBASE_ASSERT_RETURN (Future<void >(), internal::IsInitialized ());
625628
@@ -628,12 +631,18 @@ void Send(const Message &message) {
628631 SafeFutureHandle<void > handle = api->SafeAlloc <void >(kMessagingFnSubscribe );
629632
630633 LogInfo (" FCM: Subscribe to topic `%s`" , topic);
634+
635+ if (!IsTokenRegistrationOnInitEnabled ()) {
636+ api->Complete (handle, kErrorNoRegistrationToken ,
637+ kErrorMessageNoRegistrationToken );
638+ return MakeFuture (api, handle);
639+ }
631640 if (![FIRMessaging normalizeTopic: @(topic)]) {
632641 std::string error = " Cannot parse topic name " ;
633642 error += topic;
634643 error += " . Will not subscribe." ;
635644 api->Complete (handle, kErrorInvalidTopicName , error.c_str ());
636- return Future< void > (api, handle. get () );
645+ return MakeFuture (api, handle);
637646 }
638647 [[FIRMessaging messaging ] subscribeToTopic: @(topic)
639648 completion: ^void (NSError *error) {
@@ -643,7 +652,7 @@ void Send(const Message &message) {
643652 api->Complete (handle, kErrorNone );
644653 }
645654 }];
646- return Future< void > (api, handle. get () );
655+ return MakeFuture (api, handle);
647656}
648657
649658Future<void > SubscribeLastResult () {
@@ -661,12 +670,18 @@ void Send(const Message &message) {
661670 SafeFutureHandle<void > handle = api->SafeAlloc <void >(kMessagingFnUnsubscribe );
662671
663672 LogInfo (" FCM: Unsubscribe to topic `%s`" , topic);
673+
674+ if (!IsTokenRegistrationOnInitEnabled ()) {
675+ api->Complete (handle, kErrorNoRegistrationToken ,
676+ kErrorMessageNoRegistrationToken );
677+ return MakeFuture (api, handle);
678+ }
664679 if (![FIRMessaging normalizeTopic: @(topic)]) {
665680 std::string error = " Cannot parse topic name " ;
666681 error += topic;
667682 error += " . Will not unsubscribe." ;
668683 api->Complete (handle, kErrorInvalidTopicName , error.c_str ());
669- return Future< void > (api, handle. get () );
684+ return MakeFuture (api, handle);
670685 }
671686 [[FIRMessaging messaging ] unsubscribeFromTopic: @(topic)
672687 completion: ^void (NSError *error) {
@@ -676,7 +691,7 @@ void Send(const Message &message) {
676691 api->Complete (handle, kErrorNone );
677692 }
678693 }];
679- return Future< void > (api, handle. get () );
694+ return MakeFuture (api, handle);
680695}
681696
682697Future<void > UnsubscribeLastResult () {
0 commit comments