push-notificationionic2cordova-pluginspushwoosh

How to implement pushwoosh with ionic 2


I want to implement pushwoosh in ionic 2 i am using this cordova plugin. i am new to ionic 2 want to know how to use methods from this plugin.


Solution

  • First read the pushwoosh manual about using the cordova plugin: http://docs.pushwoosh.com/docs/cordova-phonegap

    After that i got this code working on ios and android.

    On step 3, you can use the following code as a service provider: in my projects folder i created this file: /src/app/providers/push-service.ts

    import { Injectable } from "@angular/core";
    import { Platform } from 'ionic-angular';
    declare var cordova : any;
    
    @Injectable()
    export class PushService {
    
        PUSHWOOSH_APP_ID : string =  'XXXXX-XXXXX'; // your pushwoosh app id
        GOOGLE_PROJECT_NUMBER: string = 'XXXXXXXXXXXX'; // project number from firebase
    
        constructor(public platform : Platform){
    
            this.platform.ready().then(() => {
                if(this.platform.is('ios') || this.platform.is('android')){
                    console.log("PushwooshService init: Running on push compatible platform "+ this.platform.userAgent() +')');
                    this.initPushwoosh();
                } else{
                    console.log("PushwooshService init: No compatible platform available.  Skipping init.)");
                    return;
                }
            });
    
    
        }
    
        initPushwoosh(){
            let pushNotification = cordova.require("pushwoosh-cordova-plugin.PushNotification");
    
              //set push notifications handler
              document.addEventListener('push-notification', function (event) {
                let message = (event as any).notification.message; // Push message
                let userData = (event as any).notification.userdata; // Custom push data
    
                if (userData) {
                // handle custom push data here
                console.log('user data: ' + JSON.stringify(userData));
                }
    
              });
    
              //initialize Pushwoosh with projectid: "GOOGLE_PROJECT_NUMBER", pw_appid : "PUSHWOOSH_APP_ID". This will trigger all pending push notifications on start.
              pushNotification.onDeviceReady({
                  appid: this.PUSHWOOSH_APP_ID,
                  projectid: this.GOOGLE_PROJECT_NUMBER
                  // serviceName: "MPNS_SERVICE_NAME"
              });
    
              //register for pushes
              pushNotification.registerDevice(
                  function (status) {
                    var pushToken = status;
                    console.log(pushToken);
                    alert('push token: ' + JSON.stringify(pushToken));
                  },
                  function (status) {
                    alert(JSON.stringify(['failed to register ', status]));
                  }
              );
        }
    
    }
    

    Now you can import this provider in your /src/app/app.component.ts.

        import { PushService } from '../providers/push-service';
    
        @Component({
          templateUrl: 'app.html',
          providers: [PushService]
        })
    

    Whenever your app is launched, it will initialize pushwoosh.

    Good luck ;)