開発者ポータルよりアプリケーションスコープのトピックにメッセージを送信する
アプリ開発者は、開発者ポータルよりアプリケーションスコープのトピックにメッセージを送信できます。
送信方法は ユーザープッシュ通知の送信 をご覧ください。
SDK を使ってメッセージを送信する
メッセージの送信
アプリケーションスコープのトピックには、アプリ管理者のみがメッセージを送信できます。
以下に、メッセージ送信を行うコード例を挙げます。
// Authenticate as the app administrator.
// Check the ClientID and ClientSecret in the Kii Cloud developer portal.
Kii . authenticateAsAppAdmin ( "ClientID" , "ClientSecret" ). then (
function ( adminContext ) {
// Instantiate a topic.
var topicName = "SendingAlert" ;
var topic = adminContext . topicWithName ( topicName );
// Create push message data.
var contents = {
message : "hello push!"
};
// Create a push message.
var message = new KiiPushMessageBuilder ( contents ). build ();
// Send the push message.
return topic . sendMessage ( message );
}
). then (
function ( params ) {
var theTopic = params [ 0 ];
var theMessage = params [ 1 ];
// Do something.
}
). catch (
function ( error ) {
// Handle the error.
// Get the topic for the failed sendMessage() method.
var theTopic = error . target ;
var errorString = error . message ;
}
);
// Authenticate as the app administrator.
// Check the ClientID and ClientSecret in the Kii Cloud developer portal.
Kii . authenticateAsAppAdmin ( "ClientID" , "ClientSecret" , {
success : function ( adminContext ) {
// Instantiate a topic.
var topicName = "SendingAlert22" ;
var topic = adminContext . topicWithName ( topicName );
// Create push message data.
var contents = {
message : "hello push!"
};
// Create a push message.
var message = new KiiPushMessageBuilder ( contents ). build ();
// Send the push message.
topic . sendMessage ( message , {
success : function ( theTopic , theMessage ) {
// Do something.
},
failure : function ( errorString ) {
// Handle the error.
}
});
},
failure : function ( errorString , errorCode ) {
// Handle the error.
}
});
グループスコープのトピックには、任意のグループメンバーがメッセージを送ることができます。以下に、メッセージ送信を行うコード例を挙げます。
// Instantiate a group.
var group = KiiGroup . groupWithURI ( groupURI );
// Refresh the group.
group . refresh (). then (
function ( theGroup ) {
// Instantiate a topic in the group scope.
var topicName = "GroupTopic" ;
var topic = group . topicWithName ( topicName );
// Create push message data.
var contents = {
"field1" : 1 ,
"field2" : "str" ,
"field3" : 1.12 ,
"field4" : false
};
// Create a push message.
var message = new KiiPushMessageBuilder ( contents ). build ();
// Send the push message.
return topic . sendMessage ( message );
}
). then (
function ( params ) {
var theTopic = params [ 0 ];
var theMessage = params [ 1 ];
// Do something.
}
). catch (
function ( error ) {
// Handle the error.
// Get the group for the failed refresh() method.
var theGroup = error . target ;
// Get the topic for the failed sendMessage() method.
var theTopic = error . target ;
// Get the error message.
var errorString = error . message ;
}
);
// Instantiate a group.
var group = KiiGroup . groupWithURI ( groupURI );
// Refresh the group.
group . refresh ({
success : function ( theGroup ) {
// Instantiate a topic in the group scope.
var topicName = "GroupTopic" ;
var topic = group . topicWithName ( topicName );
// Create push message data.
var contents = {
"field1" : 1 ,
"field2" : "str" ,
"field3" : 1.12 ,
"field4" : false
};
// Create a push message.
var message = new KiiPushMessageBuilder ( contents ). build ();
// Send the push message.
topic . sendMessage ( message , {
success : function ( theTopic , theMessage ) {
// Do something.
},
failure : function ( errorString ) {
// Handle the error.
}
});
},
failure : function ( theGroup , errorString ) {
// Handle the error.
}
});
ユーザースコープのトピックには、このユーザーまたはトピックの所有者のみがメッセージを送信できます。以下に、メッセージ送信を行うコード例を挙げます。
// Instantiate a topic in the user scope.
var topicName = "MyTODO" ;
var user = KiiUser . getCurrentUser ();
var topic = user . topicWithName ( topicName );
// Create push message data.
var contents = {
"Item" : "Do something" ,
"Done" : 0
};
// Create a push message.
var message = new KiiPushMessageBuilder ( contents ). build ();
// Send the push message.
topic . sendMessage ( message ). then (
function ( params ) {
var theTopic = params [ 0 ];
var theMessage = params [ 1 ];
// Do something.
}
). catch (
function ( error ) {
// Handle the error.
var theTopic = error . target ;
var errorString = error . message ;
}
);
// Instantiate a topic in the user scope.
var topicName = "MyTODO" ;
var user = KiiUser . getCurrentUser ();
var topic = user . topicWithName ( topicName );
// Create push message data.
var contents = {
"Item" : "Do something" ,
"Done" : 0
};
// Create a push message.
var message = new KiiPushMessageBuilder ( contents ). build ();
// Send the push message.
topic . sendMessage ( message , {
success : function ( theTopic , theMessage ) {
// Do something.
},
failure : function ( errorString ) {
// Handle the error.
}
});
いずれも、以下の処理をしています。
メッセージに含めるキーと値のペアを定義した後、KiiPushMessageBuilder#build
メソッドを実行してプッシュメッセージを作成します。
sendMessage
メソッドを実行して、メッセージを送信します。
なお、グループスコープのサンプルコードでは refresh()
メソッドを実行していますが、group
をプッシュメッセージの送信だけに使用する場合は、実行を省略することもできます。
各プッシュ通知ネットワークに特有のフィールドを設定する
グループスコープのトピックまたはユーザースコープのトピックにプログラムからメッセージを送信する際、各プッシュ通知ネットワークに特有のフィールド値を設定することで、デバイスでの動作などをカスタマイズすることができます。
プッシュメッセージをカスタマイズする方法を以下に示します。
// Assume that the target topic has been instantiated.
// Create push message data.
var messageContents = {
"key1" : "value1"
};
// Create a push message builder.
var pushMessageBuilder = new KiiPushMessageBuilder ( messageContents );
// Create FCM-specific data.
pushMessageBuilder . gcmCollapseKey ( "key" )
. gcmData ({ key1 : "value1" , key2 : "value2" })
. gcmDelayWhileIdle ( true )
. gcmRestrictedPackageName ( "packageName" )
. gcmTimeToLive ( 10 );
// Create APNs-specific data.
// Make the notification silent.
var alertObject = {
body : "alert message"
};
pushMessageBuilder . apnsAlert ( alertObject )
. apnsContentAvailable ( 1 )
. apnsData ({ key1 : "value1" , key2 : 123 });
// Send an APNs message with rich content.
// pushMessageBuilder.apnsAlert(alertObject)
// .apnsBadge(3)
// .apnsCategory("myCategory")
// .apnsMutableContent(1)
// .apnsSound("sound.mp3");
// Create MQTT-specific data.
pushMessageBuilder . mqttData ({ key1 : "value1" , key2 : "value2" });
// Create a push message.
var pushMessage = pushMessageBuilder . build ();
// Send the push message.
topic . sendMessage ( pushMessage ). then (
function ( params ) {
var theTopic = params [ 0 ];
var theMessage = params [ 1 ];
// Do something.
}
). catch (
function ( error ) {
// Handle the error.
var theTopic = error . target ;
var errorString = error . message ;
}
);
// Assume that the target topic has been instantiated.
// Create push message data.
var messageContents = {
"key1" : "value1"
};
// Create a push message builder.
var pushMessageBuilder = new KiiPushMessageBuilder ( messageContents );
// Create FCM-specific data.
pushMessageBuilder . gcmCollapseKey ( "key" )
. gcmData ({ key1 : "value1" , key2 : "value2" })
. gcmDelayWhileIdle ( true )
. gcmRestrictedPackageName ( "packageName" )
. gcmTimeToLive ( 10 );
// Create APNs-specific data.
// Make the notification silent.
var alertObject = {
body : "alert message"
};
pushMessageBuilder . apnsAlert ( alertObject )
. apnsContentAvailable ( 1 )
. apnsData ({ key1 : "value1" , key2 : 123 });
// Send an APNs message with rich content.
// pushMessageBuilder.apnsAlert(alertObject)
// .apnsBadge(3)
// .apnsCategory("myCategory")
// .apnsMutableContent(1)
// .apnsSound("sound.mp3");
// Create MQTT-specific data.
pushMessageBuilder . mqttData ({ key1 : "value1" , key2 : "value2" });
// Create a push message.
var pushMessage = pushMessageBuilder . build ();
// Send the push message.
topic . sendMessage ( pushMessage , {
success : function ( theTopic , theMessage ) {
// Do something.
},
failure : function ( errorString ) {
// Handle the error.
}
});
iOS デバイスに サイレント通知 を送信する場合は、このコード例のように apnsContentAvailable
でフラグを立ててください。また、iOS に画像付きメッセージなどのリッチ通知を送信したい場合は、コメントアウトされている部分を参考にフィールドをセットしてください。
プッシュメッセージはデフォルトで全てのプッシュ通知ネットワークに送信されます。次の例のようにフラグを設定することによりプッシュメッセージの送信先を制御できます。
// Deliver a push message to Android devices using FCM only.
var message = KiiPushMessageBuilder . buildWith ( data )
. enableApns ( false )
. enableMqtt ( false )
. build ();
// Deliver a push message to iOS devices only.
var message = KiiPushMessageBuilder . buildWith ( data )
. enableGcm ( false )
. enableMqtt ( false )
. build ();
// Deliver a push message using MQTT only.
var message = KiiPushMessageBuilder . buildWith ( data )
. enableGcm ( false )
. enableApns ( false )
. build ();