ニフクラmBaaSお役立ちブログ

スマホアプリ開発にニフクラmBaaS。アプリ開発に役立つ情報をおとどけ!

BtoBtoCで使える管理画面を作る【プッシュ通知の概念編】

BtoBtoC(BtoBtoBでも可)向けのアプリの場合、そのアプリを提供している会社向けに管理画面を提供したいと考えることがあります。その管理画面では、利用企業が自分たちのデータについてだけメンテナンスできるようになります。

そのための管理画面を作成していきます。今回は各企業向けにプッシュ通知機能を提供する場合の方法について紹介します。

絞り込みできるようにフラグを設ける

プッシュ通知はデータストアのACLのような制御ではなく、フィルタリングできるフラグによって制御するのが良いでしょう。そして、各企業の管理画面からプッシュ通知を作成する際に、常にその条件を含めるようにします。

今回の例で行くと、企業名を使うのが良いでしょう。

iOSの場合

iOSの場合は setObjectを使って指定します。

- (void)application:(UIApplication *)application
    didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{

    //NCMBInstallationのインスタンスを作成
    NCMBInstallation *installation = [NCMBInstallation currentInstallation];

    //DeviceTokenを設定
    [installation setDeviceTokenFromData:deviceToken];

    //独自フィールドを設定
    [installation setObject:@"companyName" forKey: companyName];

    //端末情報をデータストアに保存
    [installation saveInBackgroundWithBlock:^(NSError *error) {
        NSLog(@"installationIdInBlock:%@", installation.objectId);
        if(!error){
            //端末情報の登録が成功した場合の処理
        } else {
            //端末情報の登録が失敗した場合の処理
        }
    }];
}

Androidの場合

Androidではputを使います。

//NCMBInstallationのインスタンスを作成
final NCMBInstallation installation = NCMBInstallation.getCurrentInstallation();

//GCMからRegistrationIdを取得
installation.getRegistrationIdInBackground("senderId", new DoneCallback() {
    @Override
    public void done(NCMBException e) {
        if (e == null) {
            //独自フィールドの設定
            installation.put("companyName", companyName);

            //端末情報の登録
            installation.saveInBackground(new DoneCallback() {
                @Override
                public void done(NCMBException saveErr) {
                    if (saveErr != null) {
                        //端末情報登録時のエラー処理
                    }
                }
            });
        } else {
            //ID取得失敗
            error = e;
        }
        TestCompletion = true;
    }
});

JavaScript(Monaca)の場合

JavaScriptの場合、setを使います。

//JavaScript SDKのInstallationクラスを利用して端末情報を取得
ncmb.Installation.fetchById("object_id")
  .then(function(installation){
    //独自フィールドの設定とデータストアへの保存
    installation.set("companyName", companyName);
    return installation.update();
  })
  .then(function(installation){
    // 更新後の処理
  })
  .catch(function(err){
    // エラー処理
  });

Unityの場合

Unityの場合はAddを使います。

NCMBInstallation installation = NCMBInstallation.getCurrentInstallation();
installation.Add ("companyName", companyName);
installation.SaveAsync ((NCMBException e)=>{
    if(e!=null){
        //成功時の処理
    } else {
        //エラー時の処理
    }
});

このようにデバイストークンに対して企業名を持たせておけば、検索条件として指定できるようになります。次回は実際にプッシュ通知を作成する処理を紹介します。