2015-11-02 46 views

回答

2

在我的Ionic項目測試中,我使用了Mobile Services插件庫https://github.com/Azure/azure-mobile-services-cordova.git和PushPlugin https://github.com/phonegap-build/PushPlugin.git

這裏是代碼片段整合GCM:

初始移動服務客戶端和GCM配置:

/**** 
    Mobile service configs 
    ****/ 
    var mobileServiceClient; 
    var mobileServiceUrl = 'https://<your_mobile_service_name>.azure-mobile.net/'; 
    var mobileSerivceKey = '<your service key>'; 

    /**** 
    Notification hubs configs 
    *****/ 
    var GCM_SENDER_ID = 'gcm_sender_id_number'; // Replace with your own ID. 
    var androidConfig = { 
     "senderID": GCM_SENDER_ID, 
     }; 

配置GCM和天青通知轂在angular模塊的應用程序的配置:

angular.module('myapp', ['ionic','ngCordova']) 
.run(function($ionicPlatform,$rootScope,$cordovaPush) { 
    $ionicPlatform.ready(function() { 

    if (window.cordova && window.cordova.plugins.Keyboard) { 
     cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true); 
     cordova.plugins.Keyboard.disableScroll(true); 

    } 
    if (window.StatusBar) { 
     // org.apache.cordova.statusbar required 
     StatusBar.styleDefault(); 
    } 

    //init mobileServiceClient 
    mobileServiceClient = new WindowsAzure.MobileServiceClient(mobileServiceUrl,mobileSerivceKey); 
    //register notification push 
    console.log("======mobileServiceClient inited going on ======"); 
    $cordovaPush.register(androidConfig).then(function(result) { 
     // Success 
     console.log("=============register finished========"); 
    }, function(err) { 
     // Error 
    }) 
    $rootScope.$on('$cordovaPush:notificationReceived', function(event, notification) { 
     switch(notification.event) { 
     case 'registered': 
      if (notification.regid.length > 0) { 
      $rootScope.GCM_status = true; 
      alert('registration ID = ' + notification.regid); 
       //register to Azure Mobile Service 
      if (mobileServiceClient) { 
       // Template registration. 
       var template = '{ "data" : {"message":"$(message)"}}'; 
       // Register for notifications. 
       mobileServiceClient.push.gcm.registerTemplate(notification.regid, 
       "myTemplate", template, null) 
       .done(function() { 
        $rootScope.Azure_Push_status = true; 
        alert('Registered template with Azure!'); 
       }); 
       // .fail(function (error) { 
       //  alert('Failed registering with Azure: ' + error); 
       // }); 
      } 
      } 
      break; 

     case 'message': 
      // this is the actual push notification. its format depends on the data model from the push server 
      alert('message = ' + notification.message + ' msgCount = ' + notification.msgcnt); 
      break; 

     case 'error': 
      alert('GCM error = ' + notification.msg); 
      break; 

     default: 
      alert('An unknown GCM event has occurred'); 
      break; 
     } 
    }); 
    // WARNING: dangerous to unregister (results in loss of tokenID) 
    $cordovaPush.unregister().then(function(result) { 
     // Success! 
    }, function(err) { 
     // Error 
    }) 

    }); 
}) 

有關在Cordova應用程序中集成Azure通知中心的更多信息,請參閱Microsoft Azure : Push Notifications to Cordova Apps with Microsoft Azure

相關問題