gpt4 book ai didi

android - parse.com 自定义通知接收器

转载 作者:行者123 更新时间:2023-11-30 02:01:13 25 4
gpt4 key购买 nike

我正在为 parse.com 推送通知使用自定义通知接收器类来更改声音、振动......有时,在我看来通知没有到达。我可以在解析网站上看到推送通知已发送。也许有人可以查看我的代码并看到一些错误的代码 fragment 。

list :

  <service android:name="com.parse.PushService" />

<receiver
android:name="com.parse.GcmBroadcastReceiver"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />


<category android:name="com.mflapp.test" />
</intent-filter>
</receiver>
<receiver
android:name=".MyCustomReceiver"
android:exported="false" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.USER_PRESENT" />
<action android:name="com.parse.push.intent.RECEIVE" />
<action android:name="com.parse.push.intent.OPEN" />
<action android:name="com.parse.push.intent.DELETE" />
</intent-filter>
</receiver>

我的自定义接收者

public class MyCustomReceiver  extends ParsePushBroadcastReceiver {
private static int NOTIFICATION_ID = 1;


protected void onPushReceive(Context mContext, Intent intent) {

try {
String action = intent.getAction();
String channel = intent.getExtras().getString("com.parse.Channel");
JSONObject json = new JSONObject(intent.getExtras().getString("com.parse.Data"));
if (action.equalsIgnoreCase("com.parse.push.intent.RECEIVE")) {
NOTIFICATION_ID++;
String title = mContext.getResources().getString(R.string.app_name);
if (json.has("alert"))
{
String text = json.getString("alert");
generateNotification(mContext, title, json, text);
}
}
} catch (JSONException e) {
}
}


private void generateNotification(Context context, String title, JSONObject json, String text) {
Intent intent = new Intent(context, home.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
PendingIntent contentIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_ONE_SHOT);

NotificationManager mNotifM = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);

NotificationCompat.Builder mBuilder =
new NotificationCompat.Builder(context)
.setSmallIcon(R.mipmap.ic_launcher)
.setLargeIcon(BitmapFactory.decodeResource(context.getResources(), R.mipmap.ic_launcher))
.setAutoCancel(true)
.setContentTitle(title)
.setContentText(text)
.setStyle(new NotificationCompat.BigTextStyle().bigText(text))
.setTicker(text)
.setLights(Color.GREEN, 500, 500);
mBuilder.setContentIntent(contentIntent);
mNotifM.notify(NOTIFICATION_ID, mBuilder.build());
}

}

最佳答案

你是不是完全没有遗漏@Override 注释?该方法的签名应该是:

@Override 
protected void onPushReceive(Context mContext, Intent intent)

当我遇到通知问题时,我添加了一行:android:name=".MyApplication"添加到 Android list 中的应用程序标签,它帮助了我。

此外,我不确定您的计数系统是否良好。当您重新启动应用程序时,计数再次从 1 开始。我想您在向用户显示时使用了通知 ID,但现在它不起作用。

关于android - parse.com 自定义通知接收器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31437770/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com