Как реализовать Push-уведомление в гибридном мобильном приложении с использованием Bluemix

Ранее я реализовывал push в своем гибридном мобильном приложении, используя приведенный ниже код.

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);
}

Теперь из-за изменений в службе Push, я внедряю Push-уведомления, \

function EnablePushNotification(email)
{
    //deviceUserID = email;
    console.log("--Inside EnablePushNotification--");



    try {
        //initialize SDK with IBM Bluemix application ID and route
        //TODO: Please replace <APPLICATION_ROUTE> with a valid ApplicationRoute and <APPLICATION_ID> with a valid ApplicationId        
        debugger;
        BMSClient.initialize("<APPLICATION_ROUTE>","<APPLICATION_ID>");



        var success = function(message) { console.log("Success: " + message); };
        var failure = function(message) { console.log("Error: " + message); };
        MFPPush.registerDevice({}, success, failure);

        this.registerNotificationsCallback();
    }

    catch (MalformedURLException) {
        console.log("Error in initilization-->>" + MalformedURLException);        
    }


}

Но я получаю ниже ОШИБКУ.

Ошибка при инициализации ->>ReferenceError: BMSClient не определен.

В моем index.html я включил MPUSH.js и BMSClient.js

я получил эти файлы.js (MFPush.js,BMSClient.js), создав проект cordova и добавив к ним среду.

Я ознакомился с документами blumix, Push Notification предоставляется для приложений iOS, Android и Cordova, но не для гибридного мобильного приложения.

Пожалуйста, помогите в этом отношении!

Я не использую адаптеры в своем гибридном приложении для инициализации Bluemix SDK.

Я также проверил ссылку ниже.

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

1 ответ

Окончательное обновление

Первоначально я думал, что у проекта возникли проблемы с подключением моста кордовы, однако я понял, что родные зависимости отсутствуют. Это связано с тем, что MFP не поддерживает Gradle, поэтому вам нужно будет внести некоторые изменения в плагины, чтобы проект работал в MFP.

Выполните следующие действия для каждого плагина, который вы хотите использовать:

  • Скачать соответствующий .aar из списка Bluemix MobileFirst Maven центральных репозиториев.
  • Извлечь 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.

Другие вопросы по тегам