Bucket の購読

ある Bucket の更新に興味のあるユーザーは、この Bucket を講読することで、Bucket に何らかの更新があった際にプッシュ通知を受信できるようになります。

Bucket を購読して監視を開始する例を以下に挙げます。

  • // If the bucket is new, save it on Kii Cloud by saving a KiiObject in the bucket and then
    // subscribe to the bucket. You cannot subscribe to a bucket if it does not exist on Kii Cloud.
    
    // Instantiate a bucket.
    KiiUser user = KiiUser.getCurrentUser();
    KiiBucket bucket = user.bucket("_target_bucket_");
    
    try {
      // Create and save a KiiObject in the bucket.
      bucket.object().save();
    
      // Subscribe to the bucket.
      user.pushSubscription().subscribeBucket(bucket);
    } catch (IOException e) {
      // Handle the error.
    } catch (AppException e) {
      // Handle the error.
    }
  • // If the bucket is new, save it on Kii Cloud by saving a KiiObject in the bucket and then
    // subscribe to the bucket. You cannot subscribe to a bucket if it does not exist on Kii Cloud.
    
    // Instantiate a bucket.
    KiiUser user = KiiUser.getCurrentUser();
    final KiiBucket bucket = user.bucket("_target_bucket_");
    
    // Create and save a KiiObject in the bucket.
    bucket.object().save(new KiiObjectCallBack() {
      @Override
      public void onSaveCompleted(int token, KiiObject object, Exception exception) {
        if (exception != null) {
          // Handle the error.
          return;
        }
    
        // Subscribe to the bucket.
        user.pushSubscription().subscribeBucket(bucket, new KiiPushCallBack() {
          @Override
          public void onSubscribeBucketCompleted(int taskId, KiiBucket target, Exception exception) {
            if (exception != null) {
              // Handle the error.
              return;
            }
          }
        });
      }
    });

多数の KiiObject を持つ Bucket の購読

Bucket への更新が 1 件あるごとに、プッシュ通知は 1 回行われるため、Bucket によってはプッシュ通知の回数が非常に多くなります。

たとえば、3 台のデバイスを持っているユーザーが、ある Bucket を購読しているとします。その Bucket に 100 件のオブジェクトがあり、それらすべてが更新されたとすると、プッシュ通知の回数は各デバイスごとに 100 回、合計 300 回のプッシュ通知となります。

あらかじめ、このように大量のプッシュ通知が発生することが予想できる場合は、サーバー上変更のプッシュ通知(Push to App)ではなく、ユーザープッシュ通知 (Push to User) を利用することができます。Bucket を更新した後、プログラムからトピックへのメッセージ送信の要求を出すことで、プッシュ通知の回数をデバイスごとに 1 回とすることができます。ただし、この場合は トランザクション に示すように、更新とトピックへのプッシュ要求の間に処理の中断要素があるため、プッシュが届かない可能性も考慮する必要があります。