Итак, я работаю над push-уведомлениями и следовал этому учебнику , и я могу успешно отправлять push-уведомления из моего проекта Firebase на мой телефон. Теперь я пытаюсь реализовать отправку сообщений группам устройств, как показано в этом руководстве Google .
Теперь я получаю токен устройства, используя этот метод:
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data)
{
let tokenString = deviceToken.reduce("", {$0 + String(format: "%02X", $1)})
print("deviceToken: \(tokenString)")
}
и я пытаюсь добавить его в группу устройств (на стороне сервера) следующим образом:
public static String addDeviceToGroup(String userKeyName, List<String> deviceToken, String notificationKey) throws IOException, JSONException {
String result = "";
URL url = new URL(API_URL_FCM_GROUP);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setUseCaches(false);
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setRequestMethod("POST");
conn.setRequestProperty("Authorization", "key=" + AUTH_KEY_FCM);
conn.setRequestProperty("Content-Type", "application/json");
conn.setRequestProperty("project_id", SENDER_ID);
JSONObject json = new JSONObject();
json.put("registration_ids",deviceToken);
json.put("operation","add");
json.put("notification_key_name",userKeyName.trim());
json.put("notification_key",notificationKey.trim());
try {
OutputStreamWriter wr = new OutputStreamWriter(
conn.getOutputStream());
wr.write(json.toString());
wr.flush();
int responseCode = conn.getResponseCode();
System.out.print("RESPONSE CODE in addDeviceToGroup IS: " + responseCode + "\n");
BufferedReader br = null;
if (responseCode == 200)
br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
else
br = new BufferedReader(new InputStreamReader(conn.getErrorStream()));
String output;
System.out.println("Output from Server .... \n");
while ((output = br.readLine()) != null) {
System.out.println(output);
}
result = SUCCESS;
} catch (Exception e) {
e.printStackTrace();
result = FAILURE;
}
System.out.println("FCM Notification added device to group successfully RESULT IS " + result);
return result;
}
Я продолжаю получать 400 в качестве кода ответа, и я получаю эту ошибку:
{"error":"no valid registration ids"}
Я также получаю ту же ошибку при попытке удалить из deviceGroup.
РЕДАКТИРОВАТЬ: Однако, когда я получаю токен с этим:
let secondToken = InstanceID.instanceID().token()!
токен успешно добавлен в группу устройств, и когда я отправляю пользователю msg на ключ уведомления, принадлежащий устройству, в моей консоли показывается, что он доставлен:
{"success":2,"failure":0}
но оно не появляется на моем устройстве.
Любая помощь будет оценена.