Class KiiPushMessage


  • public class KiiPushMessage
    extends java.lang.Object
    Used for sending message to topic. Able to generate common, android/ios specific message. Bellow is the example.
    
     public void pushTest() throws AppException, IOException {
         //
         // Example 1. send common data to ios/Android
         //
         KiiPushMessage.Data commonData = new KiiPushMessage.Data();
         commonData.put("myScore", 3);
         KiiPushMessage msg = KiiPushMessage.buildWith(commonData).build();
     
         KiiTopic topic = KiiUser.topic("MyTopic");
         topic.sendMessage(msg);
         // {"myScore":3} would delivered to both android/ios device.
     
         //
         // Example 2. disable APNS delivery.
         //
         KiiPushMessage msg2 = KiiPushMessage.buildWith(commonData)
                 .enableAPNS(false).build();
     
         topic.sendMessage(msg2);
         // {"myScore":3} would only delivered to android.
     
         //
         // Example 3. set GCM specific message.
         //
         KiiPushMessage.Data gcmData = new KiiPushMessage.Data();
         gcmData.put("androidTest", true);
         GCMMessage gcm = GCMMessage.builder().withData(gcmData).build();
         KiiPushMessage msg3 = KiiPushMessage.buildWith(commonData)
                 .withGCMMessage(gcm).build();
         topic.sendMessage(msg3);
         // {"myScore":3, "androidTest":true} would delivered to android device.
         // {"myScore":3} would delivered to ios Device.
     
         //
         // Example 4. set GCM/APNS specific message.
         //
         KiiPushMessage.Data apnsData = new KiiPushMessage.Data();
         apnsData.put("iosTest", true);
         APNSMessage apns = APNSMessage.builder().withData(apnsData).build();
         KiiPushMessage msg4 = KiiPushMessage.buildWith(commonData)
                 .withGCMMessage(gcm).withAPNSMessage(apns).build();
         topic.sendMessage(msg4);
         // {"myScore":3, "androidTest":true} would delivered to android device.
         // {"myScore":3, "iosTest":true} would delivered to ios Device.
     }
     
    APNS payload length restriction
    The maximum size allowed for a APNS notification payload is 2KB (2048 bytes); APNS refuses any notification that exceeds this limit. When a PushToUser message intended to send to APNS devices by using API KiiTopic.sendMessage(KiiPushMessage), KiiCloud generates the payload from the message and if the payload length exceeds 2KB (2048 bytes), the API throws a BadRequestException. Following example shows building of a push message and actual payload generated for APNS from that push message. For details about push message fields, refer to documentation.
    Snippet to send message to APNS devices:
    
     KiiTopic topic = KiiUser.topic("MyTopic");
     Data data = new Data();
     data.put("msg", "Hello, APNS!");
     APNSMessage apns = APNSMessage.builder().withAlertBody("ab").build();
     KiiPushMessage message = KiiPushMessage.buildWith(data)
                   .withAPNSMessage(apns).build();
     topic.sendMessage(message);
     

    Notification payload generated by KiiCloud :
    { aps = { alert= { body = ab } }, to = MyTopic, su = 0abc1530-3735-446f-83ff-f42bd7d3563b, sa = app_id, s = 0abc1530-3735-446f-83ff-f42bd7d3563b, msg = Hello, APNS!, w = 1363835869135, st = APP_AND_USER }

    JPush payload
    Following example shows building of a push message and actual payload generated for JPush from that push message. For details about push message fields, refer to documentation.
    Snippet to send message to JPush devices:
    
     KiiTopic topic = KiiUser.topic("MyTopic");
     Data data = new Data();
     data.put("title", "Hello, JPush!");
     JPushMessage jPush = JPushMessage.builder().build();
     KiiPushMessage message = KiiPushMessage.buildWith(data)
                   .withAPNSMessage(jPush).build();
     topic.sendMessage(message);
     

    Notification payload generated by KiiCloud :
    { message = { topicID = MyTopic, objectScopeUserID = 0abc1530-3735-446f-83ff-f42bd7d3563b, objectScopeAppID = app_id, sender = 0abc1530-3735-446f-83ff-f42bd7d3563b, title = Hello, JPush! when = 1363835869135, objectScopeType = APP_AND_USER } }

    See Also:
    KiiTopic, GCMMessage, APNSMessage, JPushMessage
    • Method Detail

      • toString

        @NonNull
        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
        Returns:
        toJSON().toString()
      • toJSON

        @NonNull
        public org.json.JSONObject toJSON()
        Get JSONObjcet representation of this message. Operation of returned JSON object won't affect this object.
        Returns:
        JSONObject represent this message.
      • buildWith

        @NonNull
        public static KiiPushMessage.Builder buildWith​(@NonNull
                                                       KiiPushMessage.Data messageData)
        Instantiate message builder with the data.
        Parameters:
        messageData -
        Returns:
        Builder of the message.
        Throws:
        java.lang.IllegalArgumentException - when messageData is null.