GCM Cordova - 点按不打开应用程序

时间:2013-05-14 23:16:44

标签: cordova google-cloud-messaging

我正在使用GCM Cordova(昨天在Cordova 2.6下载)我发现虽然我已经成功收到通知,但使用示例代码。但是,点击通知只会清除它并关闭通知列表 - 不会启动应用程序本身。

在连接到Eclipse的手机上运行应用程序会向我显示GCMIntentService接收消息(onMessage)并最终运行'释放唤醒锁',但应用程序无法打开。不应该,或者我是否必须更改示例中的代码才能实现此目的。

我还注意到,如果我强制停止应用,则不再收到通知。这是正常的吗?

1 个答案:

答案 0 :(得分:0)

似乎答案并不简单 - 但涉及设定意图。

我按照这篇文章开始: http://www.adobe.com/devnet/phonegap/articles/android-push-notifications-with-phonegap.html

此时点按不起作用,所以我做了以下操作。在Manifest中添加了以下代码:

<intent-filter>
<action android:name="NAMEOFAPP.STARTME" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>

此代码已放入GCMIntentService.java文件中 - 它取代了上述项目引用的大部分通知代码:

    String message = extras.getString("message");
    String title = extras.getString("title");

    Intent nintent = new Intent("uk.ac.chester.uocmobile.STARTME");
    nintent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);


    nintent.addCategory(Intent.CATEGORY_DEFAULT);
    PendingIntent pintent = PendingIntent.getActivity(context, 0, nintent, 0);

    NotificationCompat.Builder mBuilder =
            new NotificationCompat.Builder(this)
                .setSmallIcon(R.drawable.icon)
                .setContentTitle(context.getString(R.string.app_name))
                .setContentIntent(pintent)
                .setWhen(System.currentTimeMillis())
                .setPriority(Notification.PRIORITY_HIGH)
                .setAutoCancel(true)
                .setContentText(message)
                .setDefaults(Notification.DEFAULT_ALL);
    NotificationManager mNotificationManager =
        (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
            mNotificationManager.notify(0, mBuilder.build());

您需要将此导入添加到同一文件中:

            import android.support.v4.app.NotificationCompat;

如果在没有以下过程的情况下执行此操作,则会在编译时出错。

右键单击您的项目,然后转到Android工具 - &gt;添加支持库。添加Android支持库,修订版本13.这会将这些调用添加到您的项目中并使其全部工作。

在此之后点击通知时,它会打开您的应用 - 将您转到您设置的主页。这可能不太理想,但对我有用。我添加了一个onstart和onresume,以确保iOS或Android上的应用程序(在HTML / JS中)将以与FaceBook应用程序相同的方式检查新消息。