0

我已遵循教程并在我的现有应用程序上实施了GCM推送通知。我已设置Main活动来显示通知。用户收到通知,点击它并在Main活动上显示通知。问题在于应用程序重新启动,它每次都显示通知。推送通知每次在应用程序启动时显示

主要活动

public void registerGCM() { 
    .... 
    protected Void doInBackground(Void... params) { 
     ServerUtilities.register(context, uname, uemail, regId); 
    } 
} 

林呼吁MainonCreate活动这个函数来注册程序。这个过程工作正常。

以下是在onCreate函数外的Main活动中的BoradcaseReceiver代码。

private final BroadcastReceiver mHandleMessageReceiver = new BroadcastReceiver() 
{ 
    @Override 
    public void onReceive(Context context, Intent intent) 
    { 
     String newMessage = intent.getExtras().getString(EXTRA_MESSAGE); 
     WakeLocker.acquire(getApplicationContext()); 
     Toast.makeText(getApplicationContext(), "New Message: " + newMessage, Toast.LENGTH_LONG).show(); 
     WakeLocker.release(); 
    } 
}; 

当用户点击它(正常工作),但它也呈现出通知,每次使用启动应用程序,只显示一次通知。我如何防止这种情况?

请让我知道如果我不够清楚。 任何帮助将不胜感激。

谢谢!

回答

1

如果我理解你正确你缺少此documentation

添加此ATTRS到您的清单活动标签之间你的结果活性,即MainActivity(上面详细信息检查链接)

android:excludeFromRecents="true" 
android:launchMode="singleTask" 
android:taskAffinity="" 

我可以” t看到你的通知接收机类,所以请确保你设置resultIntent标志,如

resultIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); 

说明:不要忘记给每一个通知一个唯一的ID

+0

我欣赏评论。编辑完成后,我会尽快与您联系。谢谢! – Kevin 2014-10-01 07:25:51

+0

我已经编辑了代码,正如你所解释的,即时通讯仍然有相同的问题。这里是更新后的代码: Manifest: '''android:name =“Main”android:excludeFromRecents =“true” GenerateNotification: 'notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TASK);' 能否请你解释一下如何传递唯一ID的通知? – Kevin 2014-10-01 07:58:07

+0

您可以分享您注册并收到通知的完整代码 – santalu 2014-10-01 08:04:28

相关问题