Как вызвать уведомление из приложения телефонной связи без службы push?

Я следил за руководством по документации PhoneGap, который отлично работал с их примером приложения, но при создании собственного приложения я не могу понять, как получить объект PushNotification в моем одностраничном приложении.

Я предполагаю, что Phonegap создает загадочный файл cordova.js на основе config.xml, и что PushNotification добавляется к корневой области window внутри этого загадочного файла.

До сих пор я пробовал...

  • Включая <script src="cordova.js"></script> в мой www/index.html
  • Убедился, что <plugin name="phonegap-plugin-push"... есть в моем файле config.xml
  • Добавлено if (typeof PushNotification === 'undefined') { alert("No PushNotification"); } в JavaScript моего приложения. Кажется, это всегда срабатывает как при локальном тестировании в браузере (файл Cordova явно не найден), так и при тестировании через приложение PhoneGap на устройстве Android.

person Luke    schedule 01.07.2017    source источник


Ответы (1)


push.on('notification', function(data) {
  console.log('notification event');
  navigator.notification.alert(
    data.message,         // message
    null,                 // callback
    data.title,           // title
    'Ok'                  // buttonName
  );
});

Приведенный выше обработчик событий будет вызываться только, когда приложение получает push-уведомление (событие уведомления).

Когда вы используете phonegap-plugin-push, он разработан именно так. Вы не можете активировать его иначе. Это происходит только при получении push-уведомления.

Вы можете просто добавить плагин и добавить эти строки в свое приложение. Это должно правильно получать уведомления. Добавьте плагин с помощью Cordova или PhoneGap в соответствии с вашим приложением.

cordova plugin add phonegap-plugin-push 
phonegap plugin add phonegap-plugin-push

затем инициируйте PushNotification непосредственно в файле js после OnDeviceReady,

var push = PushNotification.init({
    android: {
         "senderID": "XXXXXXXX" //Your sendeer ID from Firebase Cloud Messenger (FCM)
    },
    browser: {
        pushServiceURL: 'http://push.api.phonegap.com/v1/push'
    },
    ios: {
        alert: "true",
        badge: "true",
        sound: "true"
    },
    windows: {}
});

push.on('registration', function(data) {
    // data.registrationId 
    //store this in your server for future use
});

push.on('notification', function(data) {
    // data.message,
    // data.title,
    // data.count,
    // data.sound,
    // data.image,
    // data.additionalData
});

push.on('error', function(e) {
    // e.message
});
person pro_cheats    schedule 02.07.2017
comment
Спасибо. У меня проблема в том, что PushNotification не определено, хотя "phonegap-plugin-push" находится в config.xml, и я пытаюсь настроить уведомления после deviceready... все еще нет PushNotification. Вероятно, это потому, что я тестирую локальную веб-версию приложения. - person Luke; 16.07.2017
comment
о, хорошо, на всякий случай: - Проверьте сетевые подключения на устройстве перед запуском приложения. Функция init() нуждается в Интернете для регистрации устройства в FCM. Я много раз забывал об этом и получал ошибку PushNotification is not available.. - person pro_cheats; 17.07.2017