2013-05-14 29 views
0

我使用GCM科尔多瓦(昨天与科尔多瓦2.6下载)我发现,虽然我有成功接收通知,使用示例代码。然而点击通知只是清除它并关闭通知列表 - 不会启动应用程序本身。GCM科尔多瓦 - 点击不打开应用程序

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

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

回答

0

看来答案并不简单 - 但涉及建立一个意图。

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

水龙头没有在这一点上工作,所以我做了以下。下面的代码添加到清单:

<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工具 - >添加支持库。添加Android支持库,第13版。这将这些调用添加到您的项目并使其全部工作。

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