Я настроил свое приложение ios в prod и uat.В результате, идентификатор пакета отличается и отличается push-сертификатом.
Я использую firebase для push-уведомлений, и в моем iOS я настраиваю свой plist следующим образом.
func setUpFirebase() {
let filePath = Bundle.main.path(forResource: FIREBASE_PLIST, ofType: "plist")!
let options = FirebaseOptions(contentsOfFile: filePath)
FirebaseApp.configure(options: options!)
}
Я также подписываюсь на такую тему.
Messaging.messaging().subscribe(toTopic: "all")
Из моего бэкэнда я отправляю уведомление вот так.
NotificationService.sendNotificationToTopic(notification, "all");
Это реализация.Я уже использую RESTRICTED_PACKAGE_NAME , но он не работает и отправляется всем пакетам.Как мне быть?
public static void sendNotificationToTopic(Notification notification, String topic) throws JSONException, ClientProtocolException, IOException{
JSONObject notificationObject = new JSONObject();
notificationObject.put(Notification.TITLE, notification.getTitle());
notificationObject.put(Notification.TEXT, notification.getText());
notificationObject.put(Notification.ICON, notification.getIcon());
notificationObject.put(Notification.CLICK_ACTION, "FCM_PLUGIN_ACTIVITY");
JSONObject notificationData = new JSONObject();
notificationData.put(Notification.PAGE, notification.getPage()!=null?notification.getPage():"");
if (notification.getPageParam()!=null){
notificationData.put(Notification.PAGE_PARAM, notification.getPageParam());
}
JSONObject sendObject = new JSONObject();
sendObject.put(Notification.DATA, notificationData);
sendObject.put(Notification.NOTIFICATION, notificationObject);
sendObject.put(Notification.TO, "/topics/" + topic);
sendObject.put(Notification.RESTRICTED_PACKAGE_NAME, PACKAGE_NAME);
sendObject.put(Notification.PRIORITY, Notification.HIGH_PRIORITY);
HttpClient httpClient = HttpClientBuilder.create().build();
HttpPost httpPost = new HttpPost("https://fcm.googleapis.com/fcm/send");
httpPost.setHeader("Content-Type", "application/json");
httpPost.setHeader("Authorization", "key=" + FCM_KEY);//todo for pro
HttpEntity entity = new StringEntity(sendObject.toString(),"UTF-8");
httpPost.setEntity(entity);
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity responseEntity = httpResponse.getEntity();
}