Google App Engine (GAE), Urban Airship, Java, Push-уведомления.Образец кода? - PullRequest
3 голосов
/ 11 сентября 2010

Мой сервер работает на GAE (Java), и я использую услугу Urban Airship для доставки push-уведомлений. Конечно, все работает нормально, когда я использую их веб-интерфейс для отправки тестового уведомления, но я хотел бы добавить тестовую кнопку на мое приложение / сервер GAE, чтобы it запускал UA для отправки тужиться.

Проблема в том, что все примеры, которые я видел до сих пор, не компилируются с библиотеками Java GAE.

Есть ли у кого-нибудь пример кода java, которым он хотел бы поделиться, и который он собирает и запускает под GAE, чтобы вызвать push-уведомление через Urban Airship?

Спасибо!

Ответы [ 4 ]

6 голосов
/ 23 октября 2010

Вот пример кода Java, который работает в GAE и отправляет push-уведомление через Urban Airship:

URL url = new URL("https://go.urbanairship.com/api/push/");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("POST");
connection.setDoOutput(true);

String appKey = "YOUR APP KEY HERE";
String appMasterSecret = "YOUR MASTER SECRET HERE";

String authString = appKey + ":" + appMasterSecret;
String authStringBase64 = Base64.encodeBase64String(authString.getBytes());
authStringBase64 = authStringBase64.trim();

connection.setRequestProperty("Content-type", "application/json");
connection.setRequestProperty("Authorization", "Basic " + authStringBase64);

String jsonBodyString = "YOUR URBAN AIRSHIP JSON HERE";

OutputStreamWriter osw = new OutputStreamWriter(connection.getOutputStream(), "UTF-8");
osw.write(jsonBodyString);
osw.close();

int responseCode = connection.getResponseCode();
// Add your code to check the response code here

Надеюсь, это поможет!

2 голосов
/ 21 апреля 2014

На всякий случай, если кто-то пытается использовать движок приложений Google для отправки push-уведомлений через городскую среду на устройства iOS, это то, что, наконец, сработало для меня! Это для V3 API.

import org.apache.commons.codec.binary.Base64; //commons-codec-1.6.jar

try {
            URL url = new URL(URBAN_AIRSHIP_PUSH_URL);
            String nameAndPassword = DEV_API_KEY+":"+DEV_API_MASTER_SECRET;

            String authorizationHeader = Base64.encodeBase64String(nameAndPassword.getBytes("UTF-8"));
            authorizationHeader = "Basic "+authorizationHeader;

            HTTPRequest request = new HTTPRequest(url, HTTPMethod.POST);
            request.addHeader(new HTTPHeader("Authorization", authorizationHeader));
            request.addHeader(new HTTPHeader("Content-type", "application/json"));
            request.addHeader(new HTTPHeader("Accept", "application/vnd.urbanairship+json; version=3;"));

            logger.info("Authorization header for push:"+authorizationHeader);
            logger.info("PushMessage payload:"+notificationPayload);
            request.setPayload(notificationPayload.getBytes("UTF-8"));

            URLFetchService urlFetchService = URLFetchServiceFactory.getURLFetchService();
            HTTPResponse fetchedResponse = urlFetchService.fetch(request);

            if (fetchedResponse.getResponseCode() >= 400) {
                logger.warning("Push notification failed:"+new String(fetchedResponse.getContent(), "UTF-8")+
                    "response code:"+fetchedResponse.getResponseCode());
            } else {
                logger.info("PushMessage send success");
            }
        } catch (MalformedURLException e) {
            logger.log(Level.SEVERE, "PushMessage failed", e);
        } catch (IOException e) {
            logger.log(Level.SEVERE, "PushMessage failed", e);
        }
1 голос
/ 27 августа 2014

Поскольку вы сказали, что Urban Airship не является обязательным позвольте мне порекомендовать java-apns-gae.

Это библиотека Java APNS с открытым исходным кодом, которая была специально разработана для работы (и использования) в Google App Engine.

https://github.com/ZsoltSafrany/java-apns-gae

0 голосов
/ 15 сентября 2012

urbanairship4j (доступно в коде Google) использует Google HTTP Java Client , поэтому отлично работает на AppEngine, Android и т. Д.

...