ColdFusion/Java APNS-间歇性结果

ColdFusion/Java APNS-间歇性结果,java,ios,coldfusion,notifications,Java,Ios,Coldfusion,Notifications,在使用带有ColdFusion的JavaApple推送通知服务库()测试推送通知时,我遇到了奇怪/断断续续的结果 以下是有效负载字符串的示例: {"aps":{"alert":"dsfkjsdlfkjasdlfkjsdlfkjasdlkfjasldfkjasldkfjasdlkfjasldkfjasldkfjasdlkfjasldkfjasdlkfjasdlfkjasdlkfjasdlkfjasldkfjasldkfjasldkfjasldkfjasldkfjasldkfjasldkfjalsd

在使用带有ColdFusion的JavaApple推送通知服务库()测试推送通知时,我遇到了奇怪/断断续续的结果

以下是有效负载字符串的示例:

{"aps":{"alert":"dsfkjsdlfkjasdlfkjsdlfkjasdlkfjasldfkjasldkfjasdlkfjasldkfjasldkfjasdlkfjasldkfjasdlkfjasdlfkjasdlkfjasdlkfjasldkfjasldkfjasldkfjasldkfjasldkfjasldkfjasldkfjalsdkfjlasdkfjaslkdjf"},"ID":"431"} 
当我发送带有附加自定义字段和“短”消息文本的通知时,它将通过。样本:

{"ALERTTYPE":"Collection","ID":"427","ALERTVALUE":"50","aps":{"alert":"005 - Source: Eric Dev PC;"}}
但是,当我尝试发送带有“更长”文本的通知时,通知无法通过

例如,我发送了一个通知,其中包含指向集合的链接,消息文本为“004-Source:Eric Dev PC;”,我收到了该通知,但当我发送一个通知,其中包含指向集合的链接,消息文本为“004-Source:Eric Dev PC;Certificate:ABC123;指向集合的链接:Collection 123;”,该通知没有通过。在尝试推送它之前,我检查了“更长”一个上的有效负载,它并不大——158字节(我相信最大值是2048字节)。我还使用
istolong()
方法检查有效负载,并使用
shrinkBody()
缩短有效负载,以确保有效负载不会太大

{"ALERTTYPE":"Collection","ID":"427","ALERTVALUE":"50","aps":{"alert":"005 - Source: Eric Dev PC; Certificate: ABC123; Link to Collection: Collection 123;"}}
同样,该有效载荷远低于阈值

这是我的密码:

//  Create the ApnsService object
LOCAL.ApnsService =
    CreateObject("java", "com.notnoop.apns.APNS")
        .newService()
        .withCert(
            VARIABLES.ApnsCertificate["filePath"],
            VARIABLES.ApnsCertificate["password"]
            )
        .withProductionDestination()
        .build();

//  Start the Apns service
LOCAL.ApnsService.start();

//  Set default value for Connection Test status
LOCAL.ConnectionTestSuccess = true;

/*
    Test the connection - this will throw an exception if the Apple
    servers aren't reachable or the service cannot send
    notifications for now (attempt will be made at next scheduled
    time)
*/
try {
    LOCAL.ApnsService.testConnection();
}
catch (any error){
    LOCAL.ConnectionTestSuccess = false;
}

//  Connection Test worked, so attempt to send the Notification
if  (LOCAL.ConnectionTestSuccess) {
    /*
        Before attempting to send the push notification, retrieve
        and deactivate inactive device tokens to prevent issues
        with Apple
    */
    deleteInactiveDevices(apnsCert=VARIABLES.ApnsCertificate);

    //  Retrieve all User Device Tokens for this Push Notification
    LOCAL.qUserDeviceTokens = getUserDeviceTokens();

    LOCAL.aDeviceTokens =
        ListToArray(ValueList(LOCAL.qUserDeviceTokens.DEVICETOKEN));

    //  Generate a Payload Builder instance
    LOCAL.PayloadBuilder =
        CreateObject("java", "com.notnoop.apns.APNS")
            .newPayload();

    //  Add the alert body to the payload
    LOCAL.PayloadBuilder
        .alertBody(Trim(VARIABLES.MessageText));

    //  Build the Custom Fields object/structure
    LOCAL.CustomFields.id = VARIABLES.Id;

    //  Link to News Article
    if  (Len(Trim(VARIABLES.NewsArticleId))) {
        LOCAL.CustomFields.alertType = "News";
        LOCAL.CustomFields.alertValue = Trim(VARIABLES.NewsArticleId);
    }
    //  Link to Collection
    else if  (Len(Trim(VARIABLES.CollectionId))) {
        LOCAL.CustomFields.alertType = "Collection";
        LOCAL.CustomFields.alertValue = Trim(VARIABLES.CollectionId);
    }
    //  Link to Search Results
    else if (Len(Trim(VARIABLES.SearchText))) {
        LOCAL.CustomFields.alertType = "Search";
        LOCAL.CustomFields.alertValue = Trim(VARIABLES.SearchText);
    }

    //  Add Custom Fields to the Payload
    LOCAL.PayloadBuilder
        .customFields(LOCAL.CustomFields);

    /*
        Shrink the alert body so that the entire payload
        string will fit within Apple's byte limit
    */
    if  (LOCAL.PayloadBuilder.isTooLong()) {
        LOCAL.PayloadBuilder
            .shrinkBody("...");
    }

    LOCAL.PayloadJSONString =
        LOCAL.PayloadBuilder
            .build();

    /*
        Push the notification through Apple's APNS;
            Note: push() accepts a Java Collection and a Java
            String. ColdFusion Arrays are already typed as Java
            Collections, so there is no need to recast it
    */
    LOCAL.Notifications =
        LOCAL.ApnsService
            .push(
                LOCAL.aDeviceTokens,
                JavaCast("string", LOCAL.PayloadJSONString)
            );

//  Stop the Apns service
LOCAL.ApnsService.stop();

快速更新…。我发送了一系列带有额外自定义字段的通知,并一次减少一个消息文本中的字符数。如果消息文本包含32个或更少的字符(有效负载字节长度=107),则它们似乎会通过–更多,并且不会收到通知。似乎很武断…。令人不解……

还有问题吗?