6

Tôi hiện đang xây dựng một ứng dụng Android bằng ionic/ngcordova. Tôi đang ở thời điểm triển khai các thông báo đẩy. Tôi đã triển khai thông báo đẩy dưới dạng dịch vụ được tiêm ở giai đoạn app.run(function(){..}). Phần đăng ký hoạt động và tôi nhận được một cuộc gọi lại có chứa regid. Ngoài ra, khi ứng dụng ở trạng thái hoạt động, sự kiện được nâng lên và nhận được thông báo.Thông báo của ngCordova/Ionic Push khi ứng dụng ở chế độ nền

Sự cố tôi gặp phải là khi ứng dụng chạy ngầm, tất cả các thông báo sẽ không nhận được. Tôi hy vọng rằng một thông báo địa phương sẽ được nâng lên khi ứng dụng không chạy hoặc một cái gì đó tương tự, nhưng hoàn toàn không có gì xảy ra, đó là lạ.

Tôi đã rà soát web trong vài ngày qua để tìm giải pháp nhưng tôi không thể tìm thấy bất kỳ điều gì cho thấy rằng nó chỉ hoạt động.

Sau đây là notificationService.js của tôi bên trong ứng dụng của tôi

app.factory('notificationService', ['$cordovaPush', function($cordovaPush){ 

    var dataFactory = {}; 

    // 
    // When the device is ready and this service has been plumbed in... 
    document.addEventListener("deviceready", function(){ 

     console.log("initializing push notifications..."); 

     _register(); 

    }, false); 


    // 
    // Registers the device for push notifications... 
    var _register = function(){ 

     var config = {}; 

     if (device.platform == 'android' || device.platform == 'Android' || device.platform == "amazon-fireos"){ 

      // TODO: centralise this value as it can change... 
      config = { 
       senderID: "448168747432", 
       ecb: "onNotificationGCM" 
      }; 

     }else { 
      // iOS 
      config = { 
       "badge":"true", 
       "sound":"true", 
       "alert":"true" 
      }; 

      // Can add the following property to the config object to raise a callback with the information if need be... 
      // "ecb": "onNotificationRegisterAPN" 
     } 

     $cordovaPush.register(config).then(function(result){ 

        // 
        // Typically returns "ok" for android and devicetoken for iOS 
      console.log(result); 

     }); 
    }; 

    window.onNotificationGCM = function(result){ 

     console.log(result); 

     /* 
     I get called when the app is in the foreground, but nothing happens when the app is in the background. 
     */ 

    }; 

    dataFactory.register = _register; 

    return dataFactory; 
}]); 

Nếu nó giúp, tôi đang sử dụng PushSharp qua một ứng dụng Net để cung cấp những thông báo. Mọi sự trợ giúp sẽ rất được trân trọng.

UPDATE: Tôi đang sử dụng các khuôn khổ/libs sau:

  • Ionic Khung 1.2.14-beta6
  • Cordova 4.2.0
  • PushPlugin

Trả lời

3

Đối với bất cứ ai người khác đã kéo tóc của họ ra cho một vài ngày như tôi có, giải pháp đã được thực sự đơn giản ... Tôi đã mất tích hai tài sản trong hàng đợi Pushsharp QueueNotification của tôi st. Vì vậy, sử dụng các ví dụ được đưa vào PushSharp github repo ở đây: https://github.com/Redth/PushSharp#sample-code

push.QueueNotification(new GcmNotification().ForDeviceRegistrationId("DEVICE-REGISTRATION-ID-HERE").WithJson("{\"alert\":\"Hello World!\",\"badge\":7,\"sound\":\"sound.caf\"}")); 

Nhu cầu được cập nhật thêm các tính chất mất tích:

push.QueueNotification(new GcmNotification().ForDeviceRegistrationId("DEVICE REGISTRATION ID HERE") 
         .WithJson(@"{""alert"":""This is the future"",""badge"":7,""sound"":""sound.caf"",""title"":""Status Bar title"",""message"":""Some text you want to display to the user""}")); 

Nếu không nếu ứng dụng của bạn xảy ra để được phát triển sử dụng Cordova và không của nó hiện tại ở phía trước, không có gì, lặp lại không có gì sẽ xảy ra.

Mẹo mũ của tôi để gdelavald với bình luận của ông trên PushPlugin đã chỉ cho tôi đi đúng hướng ở đây:

https://github.com/phonegap-build/PushPlugin/issues/212

Các vấn đề liên quan