我使用phone gap 5.0 CLI,我正在开发android 5.0应用程序与API级别22 Js技术是jquery。
- 我正在为android平台构建并在我的设备上进行测试
- 我用的是windows 7
软件
- 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:)
插件已弃用。其他解决方案包括使用第三方解决方案