Это просто, у вас должен быть просто абстрактный объект Notification с атрибутами alert
, title
и notification_type
. И затем, пока у вас есть конкретные реализации, основанные на ваших возможных типах:
AcceptRequestNotification extends Notification
только с int booking_id
(это у вас уже есть, тот, который вы назвали CommonNotificationBean) 1113] EndRequestNotification extends Notification
, который содержит, например, ArrayList с именем servicesList
, этот ArrayList должен иметь тип Service
, и тогда служба будет иметь атрибуты: service_id
, service_name
, status
, sub_category
, который снова является другим ArrayList пользовательского типа. И тогда вы просто измените свой код на:
// Check if message contains a data payload.
if (remoteMessage.getData().size() > 0) {
Log.d(TAG, "Message data payload: " + remoteMessage.getData().get("notification_type"));
Map<String, String> params = remoteMessage.getData();
JSONObject object = new JSONObject(params);
Gson gson = new Gson();
JsonReader reader = new JsonReader(new StringReader(object.toString()));
reader.setLenient(true);
Class typeOf;
switch(remoteMessage.getData().get("notification_type")) {
case "accept_request":
typeOf = AcceptRequestNotification.class;
break;
case "end_request":
typeOf = EndRequestNotification.class;
break;
}
//you can cast this object later on (to the corresponding custom subclass of Notification), based on the notif.getNotificationType() value.
Notification notif = gson.fromJson(reader, typeOf);
sendNotification(notif);
}
Я, к сожалению, нашел свой ответ. NSURLConnection не может сделать аутентификации NTLM. Вот сообщение о том, как сделать аутентификацию NTLM с помощью стека CFNetwork.
Сообщение HTTP через стек CFNetwork
Найденный чем-то еще лучше, чем выполнение всей той скуки: Кто-то, кто уже сделал это!
ASIHTTPRequest
Обновление: существует обходное решение для iOS 4, который допускает аутентификацию NTLM снова
Звуки мне как Ваш веб-сервис имеют другое чтение (добираются) и пишут (отправляют) полномочия. Я не думаю, что это - проблема с iPhone или NSURLConnection вообще.