Push notification IBM worklight中基于标记的推送通知示例

Push notification IBM worklight中基于标记的推送通知示例,push-notification,ibm-mobilefirst,Push Notification,Ibm Mobilefirst,问题1: 我正在尝试使用IBM worklight实现基于标记的推送通知。正如培训材料中所建议的,我在应用程序描述符文件中添加了标记。我还订阅了main.js文件中的特定标记名 以下步骤: 在application-descriptor.xml中添加了带有标记名的标记。 使用WL.Client.Push.onReadyToSubscribe函数中的WL.Client.pushSubscribeBetAgoffers,{onSuccess:doSubscribeSucces,onFailure:d

问题1: 我正在尝试使用IBM worklight实现基于标记的推送通知。正如培训材料中所建议的,我在应用程序描述符文件中添加了标记。我还订阅了main.js文件中的特定标记名

以下步骤:

在application-descriptor.xml中添加了带有标记名的标记。 使用WL.Client.Push.onReadyToSubscribe函数中的WL.Client.pushSubscribeBetAgoffers,{onSuccess:doSubscribeSucces,onFailure:doSubscribeFailure}订阅该标记。 添加了WL.client.Push.onMessageprops,用于处理收到的通知的有效负载。 加载应用程序时,它转到main.jsattached中的doSubscribeMethod,但不调用回调方法doSubscribeSuccess。 在调用适配器发送notificationSubmitBroadcastNotification过程时,我提到了我订阅的tagnameOFFERS。 在控制台中,它显示发送通知失败的原因FPWSE0009E。找不到任何设备 问题2: 此过程将在何时调用WL.Server.CreateEventsource

注意:遵循了有关推送通知配置的所有步骤,为基于事件的推送提供的示例代码工作正常

编辑: 我已经在下面的日志片段中附加了错误信息

07-18 18:19:19.253:D/CordovaLog1081:file:///android_asset/www/default/worklight/cordova.js: 第1061行:processMessage失败:堆栈:类型错误:无法读取未定义的属性“hideView” 7-18 18:19:19.253:D/CordovaLog1081:at wlEnvInitfile:///android_asset/www/default/js/main.js:77:78 07-18 18:19:19.253:D/CordovaLog1081:atfile:///android_asset/www/default/worklight/worklight.js:7638:5 7-18 18:19:19.253:D/CordovaLog1081:at对象成功file:///android_asset/www/default/worklight/worklight.js:7665:5 07-18 18:19:19.253:D/CordovaLog1081:at finalizeInitfile:///android_asset/www/default/worklight/worklight.js:6972:15 07-18 18:19:19.253:D/CordovaLog1081:at目标。file:///android_asset/www/default/worklight/worklight.js:7812:7 07-18 18:19:19.253:D/CordovaLog1081:at目标。file:///android_asset/www/default/worklight/wljq.js:1202:33 07-18 18:19:19.253:D/CordovaLog1081:atfile:///android_asset/www/default/worklight/wljq.js:1047:30 07-18 18:19:19.253:D/CordovaLog1081:at Object.resolveWithfile:///android_asset/www/default/worklight/wljq.js:1158:7 07-18 18:19:19.253:D/CordovaLog1081:at Object.resolvefile:///android_asset/www/default/worklight/wljq.js:1247:34 07-18 18:19:19.253:D/CordovaLog1081:at设备成功回调file:///android_asset/www/default/worklight/worklight.js:7732:22 07-18 18:19:19.253:I/Web控制台1081:processMessage失败:堆栈:类型错误:无法读取未定义的 07-18 18:19:19.253:I/Web控制台1081:at wlEnvInitfile:///android_asset/www/default/js/main.js:77:78 07-18 18:19:19.253:I/Web控制台1081:atfile:///android_asset/www/default/worklight/worklight.js:7638:5 07-18 18:19:19.253:I/Web控制台1081:at Object.on成功file:///android_asset/www/default/worklight/worklight.js:7665:5 07-18 18:19:19.253:I/Web控制台1081:at finalizeInitfile:///android_asset/www/default/worklight/worklight.js:6972:15 07-18 18:19:19.253:I/Web控制台1081:at对象。file:///android_asset/www/default/worklight/worklight.js:7812:7 07-18 18:19:19.253:I/Web控制台1081:at对象。file:///android_asset/www/default/worklight/wljq.js:1202:33 07-18 18:19:19.253:I/Web控制台1081:atfile:///android_asset/www/default/worklight/wljq.js:1047:30 07-18 18:19:19.253:I/Web控制台1081:at Object.resolveWithfile:///android_asset/www/default/worklight/wljq.js:1158:7 07-18 18:19:19.253:I/Web控制台1081:at Object.resolvefile:///android_asset/www/default/worklight/wljq.js:1247:34 07-18 18:19:19.253:I/Web控制台1081:at设备成功回调file:///android_asset/www/default/worklight/worklight.js:7732:22 在file:///android_asset/www/default/worklight/cordova.js:1061 07-18 18:19:19.263:D/CordovaLog1081:file:///android_asset/www/default/worklight/cordova.js: 第1062行:processMessage失败:消息:S01 DeviceAuth365622402 s90e2f8ab-3e50-3564-921f-b4887579e4a2 07-18 18:19:19.263:I/Web控制台1081:processMessage失败:消息:S01 DeviceAuth365622402 s90e2f8ab-3e50-3564-921f-b4887579e4a2 atfile:///android_asset/www/default/worklight/cordova.js:1062 07-18 18:19:19.313:E/NONE1081:成功建立与MBaaS的连接 07-18 18:19:19.323:W/PluginManager1081:THREAD警告:对LoggerPlugin.log的exec调用将主线程阻塞22毫秒。插件应使用CordovaInterface.getThreadPool。 07-18 18:19:19.383:D/NONE1081:Ganesh剂量订阅特征错误 07-18 18:19:19.443:W/PluginManager1081:THREAD警告:对LoggerPlugin.log的exec调用将主线程阻塞19毫秒。插件应使用CordovaInterface.getThreadPool。 07-18 18:19:19.453:D/NONE1081:Ganesh剂量订阅功能已输入 07-18 18:19:19.484:W/PluginManager1081:THREAD警告:对LoggerPlugin.log的exec调用将主线程阻塞40毫秒。插件应使用CordovaInterface.getThreadPool。 07-18 18:19:19.543:E/NONE1081:无法订阅,服务器上未更新通知令牌
07-18 18:19:19.563:D/dalvikvm1081:GC_并发释放426K,26%释放3050K/4080K,暂停14ms+35ms,总计195ms

如果应用程序基于标记通知示例,它将不会使用WL.Server.createEventSource,因为该API方法用于基于事件源的通知,而不是基于标记的通知

确保您遵循的是基于标记的通知的正确示例,可在此处找到:

接下来,不清楚您是在iOS还是Android上进行测试,也不清楚您是否正确设置了它。确保您有:

现在,您需要确保遵循示例应用程序的实现步骤。查看示例中的main.js实现片段:

//---------------------------- Check if push support is available ----------------------
function isPushSupported() {
    var isSupported = false;
    if (WL.Client.Push){
        isSupported = WL.Client.Push.isPushSupported();
    }   
    WL.SimpleDialog.show("Tag Notifications", JSON.stringify(isSupported), [ {
        text : 'Close',
        handler : function() {}
      }
      ]);
}

//---------------------------- Set up push notifications -------------------------------
if (WL.Client.Push) {   
    WL.Client.Push.onReadyToSubscribe = function() {
        WL.SimpleDialog.show("Tag Notifications", "Ready to subscribe", [ {
            text : 'Close',
            handler : function() {}
          }
          ]);

        $('.subscribeToTagButton').removeAttr('disabled');
        $('.unsubscribeFromTagButton').removeAttr('disabled');
    };
}

// --------------------------------- Subscribe to tag ----------------------------------
function subscribeToSampleTag1() {
    WL.Client.Push.subscribeTag("sample-tag1", {
        onSuccess: subscribeTagSuccess,
        onFailure: subscribeTagFailure
    });
}

function subscribeToSampleTag2() {
    WL.Client.Push.subscribeTag("sample-tag2", {
        onSuccess: subscribeTagSuccess,
        onFailure: subscribeTagFailure
    });
}

function subscribeTagSuccess() {
    WL.SimpleDialog.show("Tag Notifications", "Subscribed to tag", [ {
        text : 'Close',
        handler : function() {}
      }
      ]);
}

function subscribeTagFailure() {
    WL.SimpleDialog.show("Tag Notifications", "Failed subscribing to tag", [ {
        text : 'Close',
        handler : function() {}
      }
      ]);
}

// ------------------------------- Check if subscribed ---------------------------------
function isSubscribedToTags() {
    var subscribedTagsSample1 = WL.Client.Push.isTagSubscribed("sample-tag1");
    var subscribedTagsSample2 = WL.Client.Push.isTagSubscribed("sample-tag2");

    WL.SimpleDialog.show("Tag Notifications", 'sample-tag1: ' + subscribedTagsSample1 + '\n' + 'sample-tag2: ' + subscribedTagsSample2, [ {
        text : 'Close',
        handler : function() {}
      }
      ]);
}

// ------------------------------- Unsubscribe from tag --------------------------------
function unsubscribeFromSampleTag1() {
    WL.Client.Push.unsubscribeTag("sample-tag1", {
        onSuccess: unsubscribeTagSuccess,
        onFailure: unsubscribeTagFailure
    });
}

function unsubscribeFromSampleTag2() {
    WL.Client.Push.unsubscribeTag("sample-tag2", {
        onSuccess: unsubscribeTagSuccess,
        onFailure: unsubscribeTagFailure
    });
}

function unsubscribeTagSuccess(response) {
    WL.SimpleDialog.show("Tag Notifications", "Unsubscribe from tag", [ {
        text : 'Close',
        handler : function() {}
      }
      ]);
}

function unsubscribeTagFailure(response) {
    WL.SimpleDialog.show("Tag Notifications", "Failed subscribing from tag", [ {
        text : 'Close',
        handler : function() {}
      }
      ]);
}

//------------------------------- Handle received notification ---------------------------------------
WL.Client.Push.onMessage = function (props, payload) {
    WL.SimpleDialog.show("Tag Notifications", "Provider notification data: " + JSON.stringify(props), [ {
        text : 'Close',
        handler : function() {
            WL.SimpleDialog.show("Tag Notifications", "Application notification data: " + JSON.stringify(payload), [ {
                text : 'Close',
                handler : function() {}
              }]);      
        }
    }]);
};

你能试着把你的问题编排得稍微好一点吗?这有点难以理解。嗨,伊丹,谢谢你的回复。我的应用程序将同时使用基于事件和基于标记的通知。到目前为止,我正在使用android进行测试。我将按照您的建议尝试使用示例程序。请告诉我WL.Server.createEventSource的abt调用。在什么时候,在什么地方,这将被称为。还建议如果我使用这两种类型的通知,我应该将事件源代码保存在单独的js文件中吗?代码分离是适用的。。。写下它对你更方便的方式。只有在登录后才能使用事件源通知。查看事件源通知教程。现在,基于标记的通知教程运行良好。但在尝试与我的应用程序集成时,我得到了**无法订阅通知服务器未在服务器上更新**。在调用subscribe之前必须调用WL.Client.connect。我已更新了原始问题。请就我发布的错误提出建议是的,请先尝试连接。