Creating a Topic

This page explains how to create a topic for each scope.

Creating an application-scope topic

Only an application admin can create an application-scope topic. All authenticated users can subscribe the topic, but only the topic creator (i.e. the application admin) can send push messages to the topic by default.

Creating an application-scope topic is supported via Kii REST API or JavaScript SDK.

With REST API

Follow these steps:

  1. Follow the steps described in "REST guides - Admin Features" and get an app admin token.
  2. Create an app-scope topic as follows (in this example, we are creating a topic named "SendingAlert"):
curl -v -X PUT \
  -H "Authorization: Bearer {ACCESS_TOKEN}" \
  "https://api.kii.com/api/apps/{APP_ID}/topics/SendingAlert"

Make sure to replace {APP_ID} with your application's AppID. Also, make sure to replace {ACCESS_TOKEN} with the token obtained in the previous step.

The topic name should be composed of up to 64 characters (alphanumeric, "-" and "_").

With the Kii Cloud SDK for JavaScript

See Creating an application-scope topic in the JavaScript Programming Guide.

Creating a group-scope topic

Any group members can create a group-scope topic. All group members can subscribe to the topic, and all of them can send push messages to the topic by default.

Unlike an app-scope topic, a group-scope topic is usually created dynamically by an application. See the following sample code to see how to do this:

  • try {
      // Create a group.
      String groupName = "MyGroup";
      KiiGroup group = Kii.group(groupName);
      group.save();
    
      // Create a topic in the group scope.
      String topicName = "GroupTopic";
      KiiTopic topic = group.topic(topicName);
    
      // Save the topic to Kii Cloud.
      topic.save();
    } catch (IOException ioe) {
      // Handle the error.
    } catch (GroupOperationException goe) {
      // Handle the error.
    } catch (AppException e) {
      // Handle the error.
    }
  • // Create a group.
    String groupName = "MyGroup";
    final KiiGroup group = Kii.group(groupName);
    group.save(new KiiGroupCallBack() {
      @Override
      public void onSaveCompleted(int token, KiiGroup group, Exception exception) {
        if (exception != null) {
          // Handle the error.
          return;
        }
    
        // Create a topic in the group scope.
        String topicName = "GroupTopic";
        KiiTopic topic = group.topic(topicName);
    
        // Save the topic to Kii Cloud.
        topic.save(new KiiTopicCallBack() {
          @Override
          public void onSaveCompleted(int taskId, KiiTopic target, Exception exception) {
            if (exception != null) {
              // Handle the error.
              return;
            }
          }
        });
      }
    });

Here's a brief description of the sample code:

  • Creates a group-scope topic by calling the topic method.
  • Saves the topic by calling the save method. You need to call the save method to reflect the change on Kii Cloud.

The topic name should be composed of up to 64 characters (alphanumeric, "-" and "_").

Creating a user-scope topic

Any authenticated users can create a user-scope topic. Only this user can subscribe to the topic and send push messages to it by default.

Like a group-scope topic, a user-scope topic is usually created dynamically by an application. See the following sample code to learn how to create a user-scope topic.

  • try {
      // Create a topic in the user scope.
      String topicName = "MyTODO";
      KiiTopic topic = KiiUser.topic(topicName);
    
      // Save the topic to Kii Cloud.
      topic.save();
    } catch (IOException ioe ) {
      // Handle the error.
    } catch (AppException e) {
      // Handle the error.
    }
  • // Create a topic in the user scope.
    String topicName = "MyTODO";
    KiiTopic topic = KiiUser.topic(topicName);
    
    // Save the topic to Kii Cloud.
    topic.save(new KiiTopicCallBack() {
      @Override
      public void onSaveCompleted(int taskId, KiiTopic target, Exception exception) {
        if (exception != null) {
          // Handle the error.
          return;
        }
      }
    });

Here's a brief description of the sample code:

  • Creates a user-scope topic by calling the topic method.
  • Saves the topic by calling the save method. You need to call the save method to reflect the change on Kii Cloud.

The topic name should be composed of up to 64 characters (alphanumeric, "-" and "_").

The KiiUser.topic() is a static method that will create a topic for the current user. The topic is always created per user instance.