Articles of firebase cloud messaging

如何使用FirebaseInstanceId.getInstance()。deleteInstanceId()?

我想删除我的FireBaseInstance FirebaseInstanceId.getInstance().deleteInstanceId() 我使用try / catch块但是我收到此错误: > W/System.err: java.io.IOException: MAIN_THREAD W/System.err: at > com.google.firebase.iid.zzd.zzb(Unknown Source) W/System.err: at > com.google.firebase.iid.FirebaseInstanceId.deleteInstanceId(Unknown > Source) W/System.err: at > package.class.onCreate(DatenLadenActivity.java:57) > W/System.err: at > android.app.Activity.performCreate(Activity.java:6272) W/System.err: > at > android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107) > W/System.err: at > android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2387) > W/System.err: at > android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2494) > W/System.err: at > android.app.ActivityThread.access$900(ActivityThread.java:157) > W/System.err: at > android.app.ActivityThread$H.handleMessage(ActivityThread.java:1356) > […]

某些Android设备中的FCM令牌问题

FCM专家请帮帮我,我必须使用FCM集成android的通知,我正在尝试Firebase给出的演示,我尝试了很多逻辑,但是它给了一些设备的第一个令牌:我使用了三个设备,Moto E(第二个) Gen)(安卓版5.1.1),三星GT-S7562(AV 4.1.2)和Karbon Titanium(AV 4.2.2),我只收到Karbon Titanium的令牌,不知道为什么我没有收到Moto E(2 Gen)和Samsung GT-S7562的令牌,但是从karbon Titanium设备接收令牌: 这是我试过的代码: Logcat Moto E2: 07-07 15:58:08.776 24152-24152/? I/art: Late-enabling -Xcheck:jni 07-07 15:58:08.802 24152-24162/? E/art: Failed sending reply to debugger: Broken pipe 07-07 15:58:08.802 24152-24162/? I/art: Debugger is no longer active 07-07 15:58:08.848 24152-24152/? D/FirebaseApp: com.google.firebase.auth.FirebaseAuth is not linked. Skipping initialization. 07-07 15:58:08.859 24152-24152/? D/FirebaseApp: […]

Firebase发出太多警报

我已经有一个每日触发的警报,它有FLAG_UPDATE_CURRENT 。 这是开发人员控制台的日志。 java.lang.SecurityException: !@Too many alarms (500) registered from pid 32326 uid 10206 at android.os.Parcel.readException(Parcel.java:1540) at android.os.Parcel.readException(Parcel.java:1493) at android.app.IAlarmManager$Stub$Proxy.set(IAlarmManager.java:206) at android.app.AlarmManager.setImpl(AlarmManager.java:428) at android.app.AlarmManager.set(AlarmManager.java:215) at com.google.firebase.iid.FirebaseInstanceIdService.zzagl(Unknown Source) at com.google.firebase.iid.FirebaseInstanceIdService.zzd(Unknown Source) at com.google.firebase.iid.FirebaseInstanceIdService.zza(Unknown Source) at com.google.firebase.iid.FirebaseInstanceIdService.zzm(Unknown Source) at com.google.firebase.iid.zzb$2.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) at java.lang.Thread.run(Thread.java:818) 我使用的是Firebase 9.6.1 。 更新: public static void setAlarm(Context context, boolean […]

具有高优先级的Firebase消息不会从Doze android 6+唤醒设备

我已将项目从使用GCM迁移到使用Firebase。 当设备处于唤醒状态或最近处于睡眠状态时,推送通知会通过确认,但如果我离开设备一小时,则在我唤醒设备之前不会发送推送。 Android文档说,如果您需要唤醒设备以传递消息,请使用优先级设置为高的FireBase。 它还说设备管理应用程序不受Doze限制,我的应用程序是一个设备管理应用程序。 我想我会提到当我将项目从GCM迁移到FCM时,我只在firebase控制台中指定了包名,而不是指纹。 我试过的。 将优先级设置为高 { “time_to_live”: 300000, “delay_while_idle”: false, “android”: { “priority”: “high” }, “data”: { “message”: “PING_DEVICE”, “time”: “21/01/2018 16:20:28”, “pushguid”: “10062” }, “registration_ids”: [ “eOMT……..” ] } 设定生存时间,以便最终传达信息。 delay_while_idle设置为false,2016年9月后FCM将忽略此值。 设备管理员应用程序不受Doze的影响,我的设备管理员应用程序,但我还明确将应用程序添加到设置 – >电池 – >优化中的Doze白名单。 这是通过设置应用程序手动完成的,而不是以代码方式编程。 我已经离开我的设备睡了3个小时,没有推动通过。 我还使用adb将设备置于Doze中。 当adb将设备置于Doze时没有收到推送,当adb将设备从Doze中取出时,推送就会通过。 进一步的想法我没有尝试过。 我的推动是数据消息。 这是因为我不希望推送到设备上的通知栏并让用户单击它来执行function。 用户没有与设备管理应用程序进行交互。 因此,数据消息由处理 onMessageReceived(RemoteMessage remoteMessage) 我相信通知消息会唤醒设备,这是我需要的,但我希望应用程序处理推送,而不是用户。 我可以拥有既包含通知又包含数据但是onMessageRecievied处理function的消息? 有没有人经历过类似的事情或有任何解决方案? [EDIT1]我在下面find了以下链接,说明您可以发送通知和数据的消息,但如果应用程序在后台,则会显示通知,但只有在用户单击通知时才会执行数据。 这不是我想要的,因为我希望数据立即在onMessageRecived中执行。 […]

Firebase +权限

我刚刚将一个应用程序从Firebase 9.0.0更新到Firebase 9.0.2。 我使用短信+广告。 compile ‘com.google.firebase:firebase-messaging:9.0.2’ compile “com.google.firebase:firebase-ads:9.0.2″ 现在已经出现了很多不必要的许可 android:name=”android.permission.READ_PHONE_STATE” android:name=”android.permission.READ_EXTERNAL_STORAGE” android:name=”android.permission.WRITE_EXTERNAL_STORAGE” 我没有在任何地方添加这些权限,因此它们必须来自Firebase。 我知道我的客户不喜欢这些权限,所以我删除了它们 我的应用程序仍然有效,消息和广告仍然有效,但我仍然怀疑我的怀疑。 为什么Firebase会添加这些权限,是否可以像我一样删除它们?

为什么firebase push_token返回黑名单?

我正在我的应用中实施Firebase消息。 在我测试应用程序时,将refreshed_token发送到我的数据库,但在实时生产环境(Play商店)中,它返回’BLACKLISTED’作为push_token。 有人知道为什么会这样吗? 或者我可以做些什么来解决这个问题。 找不到其他同样的问题。 我使用Firebase文档中的代码。 @Override public void onTokenRefresh() { super.onTokenRefresh(); String refreshedToken = FirebaseInstanceId.getInstance().getToken(); Log.d(TAG, “Refreshed token: ” + refreshedToken); sendTokenToServer(refreshedToken); } sendTokenToServer方法将令牌发布到我的api并插入数据库中。

使用Java从服务器向Android设备发送推送通知

我正在努力使用新的FCM …之前我使用过FCM,现在我正在尝试使用FCM …… 我正在尝试将我的应用服务器的推送通知发送到Android设备。 我想使用标准的Java包,尽量不要使用其他如Vert.x,apache的httpClient等… 这是我的代码: public void sendNotification(String messageBody) { try { URL url = new URL(“https://fcm.googleapis.com/fcm/send”); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setDoOutput(true); conn.setDoInput(true); conn.setRequestMethod(“POST”); conn.setRequestProperty(“Content-Type”, “application/json”); String apiKey = “AI…wE”; String credentials = “key=” + apiKey; //String basicAuth = “Basic ” + Base64.getEncoder().encodeToString(credentials.getBytes()); String basicAuth = “Basic ” + new String(Base64.encodeBase64(credentials.getBytes())); conn.setRequestProperty (“Authorization”, […]

Firebase如何发送主题通知

我使用下面的脚本向特定用户发送通知: “abc”, ‘title’ => “Hello from Api”, ‘vibrate’ => 1, ‘sound’ => 1, ); $fields = array ( ‘registration_ids’ => $registrationIds, ‘notification’ => $msg ); $headers = array ( ‘Authorization: key=’ . API_ACCESS_KEY, ‘Content-Type: application/json’ ); $ch = curl_init(); curl_setopt( $ch,CURLOPT_URL, ‘https://fcm.googleapis.com/fcm/send’ ); curl_setopt( $ch,CURLOPT_POST, true ); curl_setopt( $ch,CURLOPT_HTTPHEADER, $headers ); curl_setopt( $ch,CURLOPT_RETURNTRANSFER, true ); […]

使用“新”Firebase云消息传递API获取403响应

我们在服务器上成功使用旧版HTTP服务器协议进行FCM。 我想今天更新到FCM HTTP v1 API 。 我一步一步地做了 ,当服务器调用请求时,我们得到这个响应: Server returned HTTP response code: 403 for URL: https://fcm.googleapis.com/v1/projects/[projectid]/messages:send 这是服务器代码: URL url = new URL(“https://fcm.googleapis.com/v1/projects/[projectid]/messages:send”); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestProperty(“Authorization”, “Bearer ” + getAccessToken()); conn.setRequestProperty(“Content-Type”, “application/json”); OutputStream outputStream = conn.getOutputStream(); outputStream.write(req.getBytes(“UTF-8”)); // Exception happen here InputStream inputStream = conn.getInputStream(); getAccessToken(): private static String getAccessToken() throws IOException […]

FirebaseCloudMessaging:FirebaseInstanceId后台同步失败 – SERVICE_NOT_AVAILABLE

我已在Android中使用Firebase云消息传递(FCM)API进行推送通知。 当我实现那个时间完美的工作,但现在它找不到谷歌播放的服务。 错误是: FirebaseInstanceId:后台同步失败:SERVICE_NOT_AVAILABLE, 请帮我解决。 我在gradle文件中使用了以下依赖项。 dependencies { compile files(‘libs/ksoap2-android-assembly-3.4.0-jar.jar’) compile ‘com.android.support:appcompat-v7:23.0.0’ compile files(‘libs/gson-2.2.4.jar’) compile files(‘libs/activation.jar’) compile files(‘libs/mail.jar’) compile files(‘libs/additionnal.jar’) compile ‘com.android.support:multidex:1.0.1’ compile ‘com.facebook.android:facebook-android-sdk:4.14.0’ compile ‘com.google.firebase:firebase-messaging:9.0.2’ compile(‘com.google.android.gms:play-services:9.0.2’) { exclude group: “play-services-wallet” exclude module: “play-services-wallet” exclude group: “play-services-ads” exclude module: “play-services-ads” } } 感谢您抽时间阅读。