如何使用Bluemix在混合移动应用程序中实现推送通知

时间:2016-01-08 08:11:05

标签: mobile push-notification ibm-cloud ibm-mobile-services

我之前使用以下代码在我的混合移动应用程序中实现推送。

 if (json != null) 
 {
        httpPost.setEntity(new StringEntity(json, "UTF-8"));
 }

现在由于推送服务的变化,我正在实施推送通知,\

function EnablePushNotification(email)
{   

    var config = {

            applicationId:'',
            applicationRoute:'',
            applicationSecret:''
            //applicationSecret:''

    };
    console.log("EnablePushNotification : " + email);
    return IBMBluemix.initialize(config)
    .then(function() {
            return IBMPush.initializeService();
    })
    .then(function(push1) {
        var push = IBMPush.getService();
        //device.model
        //userName
        push.registerDevice(email, email, "alertNotification")
            .done(function(response) {
                navigator.notification.alert("Device Registered : " + response);  
                console.log("Device Registered : " + response);
                push.subscribeTag("SmarterSAM-Test").done(function(response) {
                navigator.notification.alert("Device Subscribed : " + response);
                console.log("Device Subscribed : " + response); 
            }, function(err){
                navigator.notification.alert("Error in subscribe : " + err);
                console.log("Error in subscribe : " + err); 
            });
        }, function(err){
            navigator.notification.alert("Error in Registering Device : " + err);
            //console.log("Error in subscribe : " + err);
        });
   });

}

function alertNotification(message)
{
    IBMBluemix.getLogger().info("Received notification");
    navigator.notification.alert("Received notification : " + message);
}

但我得到以下错误。

启动时出错 - >> ReferenceError:未定义BMSClient。

在我的index.html中,我已经包含了MPUSH.js和BMSClient.js

我通过创建一个cordova项目并为他们添加环境来获取这些.js(MFPush.js,BMSClient.js)文件。

我已经浏览过blumix文档,针对iOS,Android和Cordova应用程序提供推送通知,但不适用于混合移动应用程序。

请帮助这方面!!

我没有在我的混合应用程序中使用适配器来初始化Bluemix SDK。

我还检查了以下链接。

https://developer.ibm.com/answers/questions/242476/bluemix-push-service-error-while-registering-devic.html

1 个答案:

答案 0 :(得分:0)

最终更新

我原本以为该项目在拾取cordova桥时遇到了麻烦,但是,我发现缺少原生依赖项。这是因为MFP不支持Gradle,因此您需要对插件进行一些编辑,以使项目在MFP中运行。

为您想要使用的每个插件完成以下操作:

  • list of Bluemix MobileFirst maven central repos下载相应的.aar
  • classes.jar中提取.aar并将.jar重命名为该插件可识别的内容(即core-1.1.1.jar)
  • 将插件添加到项目后,在libs创建一个plugins/<plugin-name>/src/android文件夹,然后将新重命名的.jar放入该libs目录。
  • 最后,打开plugin.xml文件,并将构建路径添加到.jar目标中的<platform name="android">。它应该看起来像<lib-file src="src/android/libs/core-1.1.1.jar" />

您需要为添加的每个Bluemix Mobile Services插件执行此操作,直到MFP支持Gradle。