1

我正在使用Phonegap 2.9.0並嘗試集成PushPlugin。它適用於iOS。但Android有麻煩!我在模擬器上和我的朋友的兩部手機上進行了測試。Phonegap生成PushPlugin

這是我​​3210:

<?xml version="1.0" encoding="UTF-8"?> 

<!-- config.xml reference: https://build.phonegap.com/docs/config-xml --> 
<widget xmlns = "http://www.w3.org/ns/widgets" 
    xmlns:gap = "http://phonegap.com/ns/1.0" 
    id   = "com.phonegap.leuq" 
    version  = "0.0.1" > 

    <icon src="icon.png" /> 

    <name>LeuQ</name> 

    <description> 
     LeuQ app. 
    </description> 

    <author href="http://ovoweb.net" email="[email protected]"> 
     ovoWeb 
    </author> 

    <feature name="http://api.phonegap.com/1.0/device" /> 
    <preference name="permissions" value="none" /> 
    <preference name="phonegap-version" value="2.9.0" /> 
    <preference name="orientation" value="default" /> 
    <preference name="target-device" value="universal" /> 
    <preference name="fullscreen" value="true" /> 
    <preference name="webviewbounce" value="true" /> 
    <preference name="prerendered-icon" value="true" /> 
    <preference name="stay-in-webview" value="false" /> 
    <preference name="ios-statusbarstyle" value="black-opaque" /> 
    <preference name="detect-data-types" value="true" /> 
    <preference name="exit-on-suspend" value="false" /> 
    <preference name="show-splash-screen-spinner" value="true" /> 
    <preference name="auto-hide-splash-screen" value="true" /> 
    <preference name="disable-cursor" value="false" /> 
    <preference name="android-minSdkVersion" value="7" /> 
    <preference name="android-installLocation" value="auto" /> 
    <gap:plugin name="com.phonegap.plugins.pushplugin" /> 
    <access origin="http://127.0.0.1*" /> 

</widget> 

然後我們有以下index.html

<!-- Load Phonegap --> 
    <script src="phonegap.js"></script> 

    <!-- Load PhoneGap plugins --> 
    <script type="text/javascript" src="js/PushNotification.js"></script> 

    <!-- Load push notifications --> 
    <script type="text/javascript"> 
    $(document).ready(function() { 
      var pushNotification; 

      function onDeviceReady() { 
       $("#app-status-ul").append('<li>deviceready event received</li>'); 

           document.addEventListener("backbutton", function(e) 
           { 
         $("#app-status-ul").append('<li>backbutton event received</li>'); 

             if($("#home").length > 0) 
             { 
               // call this to get a new token each time. don't call it to reuse existing token. 
               //pushNotification.unregister(successHandler, errorHandler); 
               e.preventDefault(); 
               navigator.app.exitApp(); 
             } 
             else 
             { 
               navigator.app.backHistory(); 
             } 
           }, false); 

           try 
           { 
         pushNotification = window.plugins.pushNotification; 
         if (device.platform == 'android' || device.platform == 'Android') { 
               $("#app-status-ul").append('<li>registering android</li>'); 
          pushNotification.register(successHandler, errorHandler, {"senderID":"196052025914","ecb":"onNotificationGCM"});    // required! 
             } else { 
               $("#app-status-ul").append('<li>registering iOS</li>'); 
          pushNotification.register(tokenHandler, errorHandler, {"badge":"true","sound":"true","alert":"true","ecb":"onNotificationAPN"});  // required! 
         } 
       } 
           catch(err) 
           { 
             txt="There was an error on this page.\n\n"; 
             txt+="Error description: " + err.message + "\n\n"; 
             alert(txt); 
           } 
      } 

      // handle APNS notifications for iOS 
      function onNotificationAPN(e) { 
       if (e.alert) { 
        $("#app-status-ul").append('<li>push-notification: ' + e.alert + '</li>'); 
        navigator.notification.alert(e.alert); 
       } 

       if (e.sound) { 
        var snd = new Media(e.sound); 
        snd.play(); 
       } 

       if (e.badge) { 
        pushNotification.setApplicationIconBadgeNumber(successHandler, e.badge); 
       } 
      } 

      // handle GCM notifications for Android 
      function onNotificationGCM(e) { 
       $("#app-status-ul").append('<li>EVENT -> RECEIVED:' + e.event + '</li>'); 

       switch(e.event) 
       { 
        case 'registered': 
             if (e.regid.length > 0) 
             { 
               $("#app-status-ul").append('<li>REGISTERED -> REGID:' + e.regid + "</li>"); 
               // Your GCM push server needs to know the regID before it can push to this device 
               // here is where you might want to send it the regID for later use. 
               console.log("regID = " + e.regid); 
             } 
        break; 

        case 'message': 
          // if this flag is set, this notification happened while we were in the foreground. 
          // you might want to play a sound to get the user's attention, throw up a dialog, etc. 
          if (e.foreground) 
          { 
                 $("#app-status-ul").append('<li>--INLINE NOTIFICATION--' + '</li>'); 

                 // if the notification contains a soundname, play it. 
                 var my_media = new Media("/android_asset/www/"+e.soundname); 
                 my_media.play(); 
               } 
               else 
               {  // otherwise we were launched because the user touched a notification in the notification tray. 
                 if (e.coldstart) 
                   $("#app-status-ul").append('<li>--COLDSTART NOTIFICATION--' + '</li>'); 
                 else 
                 $("#app-status-ul").append('<li>--BACKGROUND NOTIFICATION--' + '</li>'); 
               } 

               $("#app-status-ul").append('<li>MESSAGE -> MSG: ' + e.payload.message + '</li>'); 
               $("#app-status-ul").append('<li>MESSAGE -> MSGCNT: ' + e.payload.msgcnt + '</li>'); 
        break; 

        case 'error': 
               $("#app-status-ul").append('<li>ERROR -> MSG:' + e.msg + '</li>'); 
        break; 

        default: 
               $("#app-status-ul").append('<li>EVENT -> Unknown, an event was received and we do not know what it is</li>'); 
        break; 
       } 
      } 

      function tokenHandler (result) { 
       $("#app-status-ul").append('<li>token: '+ result +'</li>'); 
       // Your iOS push server needs to know the token before it can push to this device 
       // here is where you might want to send it the token for later use. 
      } 

      function successHandler (result) { 
       $("#app-status-ul").append('<li>success:'+ result +'</li>'); 
      } 

      function errorHandler (error) { 
       $("#app-status-ul").append('<li>error:'+ error +'</li>'); 
      } 


      document.addEventListener('deviceready', onDeviceReady, true); 
      }); 
     </script> 
       <div id="home"> 
         <div id="app-status-div"> 
           <ul id="app-status-ul"> 
             <li>Cordova PushNotification Plugin Demo</li> 
           </ul> 
         </div> 
       </div> 

建設後,我得到了下面的屏幕上我的Android模擬器(和Android手機):

Android

它在註冊設備時停止,但之後沒有任何反應(並且應該對腳本進行授權)。我該怎麼辦才能解決這個問題?

回答

相關問題