我尝试实现系统以在我的应用程序上接收推送通知。
我使用Firebase,当应用程序处于活动状态或后台时一切正常,但应用程序关闭时没有任何反应。
我试图像这样创建一个WakefullBroadcastReceiver
:
public class NotificationReceiver extends WakefulBroadcastReceiver {
public static final String action = "com.myapp.notification.RECEIVE";
private static final String KEY_PUSH_DATA = "com.parse.Data";
@Override
public void onReceive(Context context, Intent intent) {
String intentAction = intent.getAction();
switch (intentAction) {
case action:
String pushDataStr = intent.getStringExtra(KEY_PUSH_DATA);
if (pushDataStr == null) {
return;
}
Log.e("PUSH", "Push data : "+pushDataStr);
Bundle extras = intent.getExtras();
MyappNotificationManager.getInstance().parseBundle(extras);
break;
}
}
}
我在 Manifest.xml
中添加它<receiver android:name=".notification.NotificationReceiver">
<intent-filter>
<action android:name="com.myapp.notification.RECEIVE"/>
</intent-filter>
</receiver>
它不起作用,我在Android开发者网站上找不到文档。
感谢您的帮助。
答案 0 :(得分:1)
添加到Manifest.xml中:
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<application>
<receiver android:name="com.dexterous.flutterlocalnotifications.ScheduledNotificationBootReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"></action>
</intent-filter>
</receiver>
<receiver android:name="com.dexterous.flutterlocalnotifications.ScheduledNotificationReceiver" />
</application>
答案 1 :(得分:0)
对于某些制造商的设备模型,例如Xiaomi,Redmi,Letv,Honor,Oppo,Vivo等,您需要获得AutoStart
许可才能在应用关闭时使之工作。对于每个制造商而言,获得此许可的方式各不相同,制造商本身已经为流行的应用程序提供了自动启动许可。因此,您可以使用一个名为AutoStarter的Android库来获取此类设备的许可。