如果我安装我的应用程序并将其启动一次,然后将其关闭并发送通知,则不会发生任何事情。如果我然后打开应用程序,它会做出反应,好像已经收到通知但它抱怨某些预期数据丢失。
然后,如果我打开应用程序并多次发送一些通知,最终通知会在系统托盘中显示为方形,即使应用程序完全关闭。
然后最终,广场变成了Android图标。
为什么系统在正常工作之前“预热”需要时间?除非在应用程序运行时收到通知,否则它不知道要显示哪个图标?
这是代码......
在MainActivity的OnCreate中,最后有一个电话......
void HandleNotification()
{
var intentBundler = Intent.Extras;
if (intentBundler != null)
{
var jobId = intentBundler.GetString("id");
DroidNotificationStrategy.ReceivedNotification(this, Convert.ToInt32(jobId));
}
}
在清单......
<application android:label="Connection Crew">
<receiver android:name="com.google.firebase.iid.FirebaseInstanceIdInternalReceiver" android:exported="false" />
<receiver android:name="com.google.firebase.iid.FirebaseInstanceIdReceiver" android:exported="true" 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="${applicationId}" />
</intent-filter>
</receiver>
</application>
Firebase服务......
namespace FCMClient
{
[Service]
[IntentFilter(new[] { "com.google.firebase.INSTANCE_ID_EVENT" })]
public class FirebaseIIDService : FirebaseInstanceIdService
{
const string TAG = "MyFirebaseIIDService";
public static string GetToken() => FirebaseInstanceId.Instance.Token;
public override void OnTokenRefresh()
{
var refreshedToken = FirebaseInstanceId.Instance.Token;
Log.Debug(TAG, "Refreshed token: " + refreshedToken);
MessagingCenter.Send<object, (EnumDeviceType, string)>(
this, "RegisterDevice", (EnumDeviceType.Droid, refreshedToken));
}
}
[Service]
[IntentFilter(new[] { "com.google.firebase.MESSAGING_EVENT" })]
public class CCFirebaseMessagingService : FirebaseMessagingService
{
public override void OnMessageReceived(RemoteMessage message)
{
var appointmentId = Convert.ToInt32(message.Data["id"]);
DroidNotificationStrategy.ReceivedNotification(this, appointmentId);
}
}
}
消息。 (“xxBODYxx”已被替换。)
@"{
""notification"" : {
""body"" : ""xxBODYxx"",
""title"" : ""Job"",
""icon"": ""ic_notification""
},
""data"": {
""id"": ""#(JobId)""
}
}
答案 0 :(得分:0)
我认为从调试器启动会影响托盘中显示的通知。
如果我使用调试器安装,立即终止应用程序,然后重新启动并立即终止应用程序,通知显示正常。