2015-10-20 120 views
0

im工作在phonegap v5.3.6和cordova v5.3.3。我在README上做了一切,但插件無法正常工作。Phonegap推送插件安裝

這是我的代碼如下;

onDeviceReady: function() { 
     var push = PushNotification.init({ 
      "android": { 
       "senderID": "MY_SENDER_ID" 
      }, 
      "ios": {}, 
      "windows": {} 
     }); 
     push.on('registration', function(data) { 
      console.log("registration event"); 
      document.getElementById("regId").innerHTML = data.registrationId; 
      console.log(JSON.stringify(data)); 
     }); 

     push.on('notification', function(data) { 
      console.log("notification event"); 
      console.log(JSON.stringify(data)); 
      var cards = document.getElementById("cards"); 
      var push = '<div class="row">' + 
        '<div class="col s12 m6">' + 
        ' <div class="card darken-1">' + 
        ' <div class="card-content black-text">' + 
        '  <span class="card-title black-text">' + data.title + '</span>' + 
        '  <p>' + data.message + '</p>' + 
        ' </div>' + 
        ' </div>' + 
        ' </div>' + 
        '</div>'; 
      cards.innerHTML += push; 
     }); 

     push.on('error', function(e) { 
      console.log("push error"); 
     }); 
    } 

它不會拋出任何成功或錯誤消息。此代碼短語有什麼錯誤?

這裏是插件的混帳回購協議:https://github.com/phonegap/phonegap-plugin-push

謝謝您的幫助

回答

1

嘗試Push Notification鏈接使用。它對我來說工作得很好。

首先與註冊您的設備,

pushNotification.register(
successHandler, 
errorHandler, 
{ 
    "senderID":"replace_with_sender_id", //It should be your project id that you will get from Google Developer Console while registering the project with package name. 
    "ecb":"onNotification" 
} 

,並添加兩個事件 - 成功與失敗像這樣,

function successHandler (result) { 
    alert('result = ' + result); //Here you will get your device id. 
} 


function errorHandler (error) { 
    alert('error = ' + error); 
} 

此外,添加onNotification事件,當設備將收到通知,將觸發。

function onNotification(e){ 
    alert(e.event); 
} 
+0

[Push Plugin](https://github.com/phonegap-build/PushPlugin)已棄用,所以我使用[this one](https://github.com/phonegap/phonegap-plugin-push )。 另外一個沒有爲我工作。 –

+0

您可能有其他問題。我已經使用https://github.com/phonegap-build/PushPlugin。請在評論中輸入你的錯誤。 – Dhruv

+0

我試圖弄清楚會發生什麼,但現在它會拋出一個錯誤,即「Class not foud。」。我搜索了一個修復程序,我嘗試了所有的建議,但我失敗了。我認爲這些插件沒有工作,因爲config.xml文件。我會在修復config.xml文件後通知您。謝謝btw。 –

1

對於人們找到答案的最佳推送通知插件PhoneGap的現有這裏提到的:Phonegap Push Notification Plugin。它在所有Android和iOS版本上工作正常。它可以使用如下:

var push = PushNotification.init({ 
      android: { 
       senderID: "XXXXXXXXXXXX", 
      }, 
      ios: { 
       alert: "true", 
       badge: "true", 
       sound: "true", 
      } 
     }); 
push.on('registration', function(data) { 
    console.log(data.registrationId); 
    registerDeviceToken(data.registrationId); 
    }); 

push.on('notification', function(data) { 
    console.log("notification event"); 
    alert(JSON.stringify(data)); 
    }); 

push.on('error', function(e) { 
    console.log("push error"); 
    alert(JSON.stringify(e)); 
}); 

function registerDeviceToken(deviceToken){ 
//Register the registrationId or deviceToken to your server as per the webservice type and parameters configuration set 
} 

'DeviceReady'事件在您的應用程序觸發後調用上述代碼。而在你AndroidManifest文件中的配置將是(參考用途):

<application> 
<meta-data 
      android:name="com.google.android.gms.version" 
      android:value="@integer/google_play_services_version" /> 

     <activity 
      android:name="com.adobe.phonegap.push.PushHandlerActivity" 
      android:exported="true" /> 

     <receiver android:name="com.adobe.phonegap.push.BackgroundActionButtonHandler" /> 
     <receiver 
      android:name="com.google.android.gms.gcm.GcmReceiver" 
      android:exported="true" 
      android:permission="com.google.android.c2dm.permission.SEND"> 
      <intent-filter> 
       <action android:name="com.google.android.c2dm.intent.RECEIVE" /> 
       <category android:name="yourPackageName" /> 
      </intent-filter> 
     </receiver> 

     <service 
      android:name="com.adobe.phonegap.push.GCMIntentService" 
      android:exported="false"> 
      <intent-filter> 
       <action android:name="com.google.android.c2dm.intent.RECEIVE" /> 
      </intent-filter> 
     </service> 
     <service 
      android:name="com.adobe.phonegap.push.PushInstanceIDListenerService" 
      android:exported="false"> 
      <intent-filter> 
       <action android:name="com.google.android.gms.iid.InstanceID" /> 
      </intent-filter> 
     </service> 
     <service 
      android:name="com.adobe.phonegap.push.RegistrationIntentService" 
      android:exported="false" /> 
    </application> 
<permission 
     android:name="${applicationId}.permission.C2D_MESSAGE" 
     android:protectionLevel="signature" /> 

    <uses-permission android:name="${applicationId}.permission.C2D_MESSAGE" /> 

    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.WAKE_LOCK" /> 
    <uses-permission android:name="android.permission.VIBRATE" /> 
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> 

這些配置,只要獲得插件安裝在AndroidManifest自動添加。在iOS中,打開項目功能部分下的推送通知服務。此外,請確保從Google Developer Console for Android和Apple推送通知服務的p12文件以及iOS的密碼向服務器團隊分享正確的Api密鑰以避免配置漏洞。