Checking the Subscription Status of a Topic

You might want to check if the current user is already subscribed to a topic. For example, your application may want to show a "SUBSCRIBE" button for users who have not yet subscribed to a topic and an "UNSUBSCRIBE" button instead for those users who are already subscribed to the topic.

Here is the sample code for checking the subscription status.

Swift:

  • // Instantiate the target topic.
    let topic = Kii.topic(withName: "SendingAlert")
    
    do{
      // Check if the current user is subscribed to the topic.
      try KiiUser.current()!.pushSubscription().checkIsSubscribedSynchronous(topic)
    }catch(let error as NSError){
      print("The current user is not subscribed to the topic.")
      return
    }
    print("The current user is subscribed to the topic.")
  • // Instantiate the target topic.
    let topic = Kii.topic(withName: "SendingAlert")
    
    // Check if the current user is subscribed to the topic.
    KiiUser.current()!.pushSubscription().checkIsSubscribed(topic) { (topic : KiiSubscribable , subscribed : Bool, error : Error?) -> Void in
      if error != nil {
        // Handle the error.
        return
      }
      if (subscribed) {
        print("The current user is subscribed to the topic.")
      } else {
        print("The current user is not subscribed to the topic.")
      }
    }

Objective-C:

  • NSError *error = nil;
    
    // Instantiate the target topic.
    KiiTopic *topic = [Kii topicWithName:@"SendingAlert"];
    
    // Check if the current user is subscribed to the topic.
    BOOL subscribed = [[KiiUser currentUser].pushSubscription checkIsSubscribedSynchronous:topic
                                                                                     error:&error];
    if (subscribed) {
      NSLog(@"The current user is subscribed to the topic.");
    } else {
      if (error.kiiHttpStatus == 404) {
        NSLog(@"The current user is not subscribed to the topic.");
      } else {
        // Handle the error.
        return;
      }
    }
  • // Instantiate the target topic.
    KiiTopic *topic = [Kii topicWithName:@"SendingAlert"];
    
    // Check if the current user is subscribed to the topic.
    [[KiiUser currentUser].pushSubscription checkIsSubscribed:topic
                                                        block:^(id<KiiSubscribable> subscribable, BOOL subscribed, NSError *error) {
      if (subscribed) {
        NSLog(@"The current user is subscribed to the topic.");
      } else {
        if (error.kiiHttpStatus == 404) {
          NSLog(@"The current user is not subscribed to the topic.");
        } else {
          // Handle the error.
          return;
        }
      }
    }];

Here is a description of the sample code:

  • Instantiates a topic.
  • Calls the checkSubscriptionSynchronous:error: method to see if the current user is already subscribed to the topic.