トピックの作成

ここでは、スコープごとにトピックの作成方法を説明していきます。

アプリケーションスコープのトピックの作成

アプリケーションスコープのトピックは、アプリ開発者のみ作成できます。作成したトピックは、全てのアプリユーザーから購読できますが、このトピックにメッセージを送信できるのは、デフォルト状態ではトピック作成者(つまりアプリ開発者)だけです。

アプリケーションスコープのトピックは、REST API または Kii Cloud SDK for JavaScript を使って作成します。

REST API を使って作成

以下の手順で作成します。

  1. 「REST スタートガイド - アプリ管理者向け機能」 の内容に従い、アプリ管理者トークンを取得します。
  2. 次の例のようにしてアプリケーションスコープのトピックを作成します(この例では "SendingAlert" という名前のトピックを作成しています)。
curl -v -X PUT \
  -H "Authorization: Bearer {ACCESS_TOKEN}" \
  "https://api-jp.kii.com/api/apps/{APP_ID}/topics/SendingAlert"

{APP_ID} には実際の AppID の値を入れます。また、取得したアプリ管理者トークンを {ACCESS_TOKEN} の箇所に入れてください。

トピック名は英数字、"-"、"_" から構成される 64 文字までの文字列として指定します。

Kii Cloud SDK for JavaScript を使って作成

Kii Cloud SDK for JavaScript の アプリケーションスコープのトピックの作成 を参照してください。

グループスコープのトピックの作成

グループスコープのトピックは、グループメンバーであれば誰でも作成可能です。また、デフォルト状態ではグループメンバーであれば誰でも購読可能であり、全てのグループメンバーがトピックに対してメッセージを送信できます。

グループスコープのトピックは通常アプリケーションによって動的に作成します。以下に、グループスコープのトピックを作成する例を挙げます。

Swift:

  • // Create a group.
    let group = KiiGroup(name: "group name")
    
    do{
      try group.saveSynchronous()
    } catch let error as NSError {
      // Handle the error.
      return
    }
    
    // Create a topic in the group scope.
    let topicName = "GroupTopic"
    let topic = group.topic(withName: topicName)
    
    do{
      // Save the topic to Kii Cloud.
      try topic.saveSynchronous()
    } catch let error as NSError {
      // Handle the error.
      return
    }
  • // Create a group.
    let group = KiiGroup(name: "group name")
    group.save { (group : KiiGroup?, error : Error?) -> Void in
      if error != nil {
        // Handle the error.
        return
      }
    
      // Create a topic in the group scope.
      let topicName = "GroupTopic"
      let topic = group!.topic(withName: topicName)
    
      // Save the topic to Kii Cloud.
      topic.save { (topic , error : Error?) -> Void in
        if error != nil {
          // Handle the error.
          return
        }
      }
    }

Objective-C:

  • NSError *error;
    
    // Create a group.
    KiiGroup *group = [KiiGroup groupWithName:@"group name"];
    [group saveSynchronous:&error];
    if (error != nil) {
      // Handle the error.
      return;
    }
    
    // Create a topic in the group scope.
    NSString *topicname = @"GroupTopic";
    KiiTopic *topic = [group topicWithName:topicname];
    
    // Save the topic to Kii Cloud.
    [topic saveSynchronous:&error];
    if (error != nil) {
      // Handle the error.
      return;
    }
  • // Create a group.
    KiiGroup *group = [KiiGroup groupWithName:@"group name"];
    [group saveWithBlock:^(KiiGroup *group, NSError *error) {
      if (error != nil) {
        // Handle the error.
        return;
      }
    
      // Create a topic in the group scope.
      NSString *topicname = @"GroupTopic";
      KiiTopic *topic = [group topicWithName:topicname];
    
      // Save the topic to Kii Cloud.
      [topic saveWithBlock:^(KiiTopic *topic, NSError *error) {
        if (error != nil) {
          // Handle the error.
          return;
        }
      }];
    }];

ここでは、以下の処理を実行しています。

  • トピックを作成したいグループインスタンスの topicWithName: メソッドを実行し、グループスコープのトピックを作成します。
  • saveSynchronous: メソッドを実行し、トピックを Kii Cloud に保存します。

トピック名は英数字、"-"、"_" から構成される 64 文字までの文字列として指定します。

ユーザースコープのトピックの作成

ユーザースコープのトピックは、ログイン済みのユーザーであれば誰でも作成可能です。このトピックはデフォルト状態ではユーザーに閉じており、トピックの購読およびトピックへのメッセージ送信を行えるのはこのユーザーのみになります。

ユーザースコープのトピックは通常アプリケーションによって動的に作成します。以下に、ユーザースコープのトピックを作成する例を挙げます。

Swift:

  • // Create a topic in the user scope.
    let user = KiiUser.current()!
    let topicName = "MyTODO"
    let topic = user.topic(withName: topicName)
    
    do{
      // Save the topic to Kii Cloud.
      try topic.saveSynchronous()
    } catch let error as NSError {
      // Handle the error.
      return
    }
  • // Create a topic in the user scope.
    let user = KiiUser.current()!
    let topicName = "MyTODO"
    let topic = user.topic(withName: topicName)
    
    // Save the topic to Kii Cloud.
    topic.save { (topic , error : Error?) -> Void in
      if error != nil {
        // Handle the error.
        return
      }
    }

Objective-C:

  • NSError *error;
    
    // Create a topic in the user scope.
    KiiUser* user = [KiiUser currentUser];
    NSString *topicname = @"MyTODO";
    KiiTopic *topic = [user topicWithName:topicname];
    
    // Save the topic to Kii Cloud.
    [topic saveSynchronous:&error];
    if (error != nil) {
      // Handle the error.
      return;
    }
  • // Create a topic in the user scope.
    KiiUser* user = [KiiUser currentUser];
    NSString *topicname = @"MyTODO";
    KiiTopic *topic = [user topicWithName:topicname];
    
    // Save the topic to Kii Cloud.
    [topic saveWithBlock:^(KiiTopic *topic, NSError *error) {
      if (error != nil) {
        // Handle the error.
        return;
      }
    }];

ここでは以下の処理を実行しています。

  • topicWithName: メソッドを実行し、ログイン中のユーザーに対するユーザースコープのトピックを作成します。
  • saveSynchronous: メソッドを実行し、トピックを Kii Cloud に保存します。

トピック名は英数字、"-"、"_" から構成される 64 文字までの文字列として指定します。