Phonegap Push插件不工作ANdroid



我使用phone gap 5.0 CLI,我正在开发android 5.0应用程序与API级别22 Js技术是jquery。

  1. 我正在为android平台构建并在我的设备上进行测试
  2. 我用的是windows 7

软件

  1. CLI、Eclipse和android

问题是电话间隙推送插件不工作我所面临的确切错误是:

10-07 13:01:14.282: E/Web Console(9564): Uncaught Type Error: Object function (options) {
10-07 13:01:14.282: E/Web Console(9564):     this._handlers = {
10-07 13:01:14.282: E/Web Console(9564):         'registration': [],
10-07 13:01:14.282: E/Web Console(9564):         'notification': [],
10-07 13:01:14.282: E/Web Console(9564):         'error': []
10-07 13:01:14.282: E/Web Console(9564):     };
10-07 13:01:14.282: E/Web Console(9564):     // require options parameter
10-07 13:01:14.282: E/Web Console(9564):     if (type of options === 'undefined') {
10-07 13:01:14.282: E/Web Console(9564):         throw new Error('The options argument is required.');
10-07 13:01:14.282: E/Web Console(9564):     }
10-07 13:01:14.282: E/Web Console(9564):     // store the options to this object instance
10-07 13:01:14.282: E/Web Console(9564):     this.options = options;
10-07 13:01:14.282: E/Web Console(9564):     // triggered on registration and notification
10-07 13:01:14.282: E/Web Console(9564):     var that = this;
10-07 13:01:14.282: E/Web Console(9564):     var success = function(result) {
10-07 13:01:14.282: E/Web Console(9564):         if (result && type of result.registration Id !== 'undefined') {
10-07 13:01:14.282: E/Web Console(9564):             that.emit('registration', result);
10-07 13:01:14.282: E/Web Console(9564):         } else if (result && type of result.callback !== 'undefined') {
10-07 13:01:14.282: E/Web Console(9564):             var multifunctional = function(function Name, context /*, args */) {
10-07 13:01:14.282: E/Web Console(9564):                 var args = Array.prototype.slice.call(
arguments, 2);
10-07 13:01:14.282: E/Web Console(9564):                 var namespaces = function Name.split(".");
10-07 13:01:14.282: E/Web Console(9564):                 var func = namespaces.pop();
10-07 13:01:14.282: E/Web Console(9564):                 for (var i = 0; i < namespaces.length; i++) {
10-07 13:01:14.282: E/Web Console(9564):                     context = context[namespaces[i]];
10-07 13:01:14.282: E/Web Console(9564):                 }
10-07 13:01:14.282: E/Web Console(9564):                 return context[func].apply(context, args);
10-07 13:01:14.282: E/Web Console(9564):             }
10-07 13:01:14.282: E/Web Console(9564):            
10-07 13:01:14.282: E/Web Console(9564):             executeFunctionByName(result.callback, window, result);
10-07 13:01:14.282: E/Web Console(9564):         } else if (result) {
10-07 13:01:14.282: E/Web Console(9564):             that.emit('notification', result);
10-07 13:01:14.282: E/Web Console(9564):         }
10-07 13:01:14.282: E/Web Console(9564):     };
10-07 13:01:14.282: E/Web Console(9564):     // triggered on error
10-07 13:01:14.282: E/Web Console(9564):     var fail = function(msg) {
10-07 13:01:14.282: E/Web Console(9564):         var e = (typeof msg === 'string') ? new Error(msg) : msg;
10-07 13:01:14.282: E/Web Console(9564):         that.emit('error', e);
10-07 13:01:14.282: E/Web Console(9564):     };
10-07 13:01:14.282: E/Web Console(9564):     // wait at least one process tick to allow event subscriptions
10-07 13:01:14.282: E/Web Console(9564):     setTimeout(function() {
10-07 13:01:14.282: E/Web Console(9564):         exec(success, fail, 'PushNotification', 'init', [options]);
10-07 13:01:14.282: E/Web Console(9564):     }, 10);
10-07 13:01:14.282: E/Web Console(9564): } has no method 'init' at file:///android_asset/www/js/Module.js:8
10-07 13:01:14.392: D/TilesManager(9564): Starting TG #0, 0x5f73f420
10-07 13:01:14.392: D/TilesManager(9564): new EGLContext from framework: 5e306a90
10-07 13:01:14.392: D/GLWebViewState(9564): Reinit shader
10-07 13:01:14.442: D/netstack(9564): netstack: Request Priority is ON
10-07 13:01:14.462: D/chromium(9564): Unknown chromium error: -6
10-07 13:01:14.532: D/GLWebViewState(9564): Reinit transferQueue
10-07 13:01:14.542: E/Web Console(9564): Uncaught Error: Module phonegap-plugin-push.PushNotification does not exist. at file:///android_asset/www/cordova.js:1418
10-07 13:01:18.742: I/Web Console(9564): device Ready has not fired after 5 seconds. at file:///android_asset/www/cordova.js:1183
10-07 13:01:18.742: I/Web Console(9564): Channel not fired: onPluginsReady at file:///android_asset/www/cordova.js:1176
10-07 13:01:18.742: I/Web Console(9564): Channel not fired: onCordovaReady at file:///android_asset/www/cordova.js:1176
can any one please help me to solve this problem
thanks in advance to help me 
谁能帮我解决这个问题为什么我使用电话差距5.0 CLI,我正在开发应用程序与API级别22 Js的android 5.0技术是jquery,我正在为android平台和我的设备上进行测试,我在我的PC上使用windows 7软件是CLI,Eclipse和android问题是电话差距推送插件不工作。

从日志'Module phonegap-plugin-push。PushNotification不存在',很明显,Phonegap推送插件没有正确安装,因此推送通知对象没有定义,或者在你的代码中可能有一些语法或编译错误,因为通常在javascript中,它会由于任何语法错误而发生,代码低于它失败。目前在github上有一个可用的Phonegap Push Plugin,它可以在所有Android Api级别(包括牛轧糖)上正常工作。注册你的推送通知对象,如下所示:

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.xml应该有以下内容:

<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中,这只是供参考的目的。

Happy Coding:)

插件已弃用。其他解决方案包括使用第三方解决方案

相关内容

  • 没有找到相关文章

最新更新