1

UA プッシュ通知を送信したい Java Web サーバーがあります。UA のダッシュボードからこれが可能であることはわかっていますが、Web サーバーを直接使用して UA と通信したいと考えています。

私はすでにこのドキュメントを読み、この SO の質問を確認しましたが、どこから始めればよいかまだ少し迷っています。

誰かが私を良い出発点に導くのを手伝ってもらえますか? 特定の .jar ファイルなどをインポートする必要がありますか?

次のコード スニペットを調整しようとしましたが、正しく機能していないようです。私は何を間違っていますか?

URL mURL=new URL("https://go.urbanairship.com/api/push/broadcast");
HttpsURLConnection connection = (HttpsURLConnection)mURL.openConnection();
connection.setRequestMethod("POST");
JSONObject mPayload=new JSONObject();
JSONObject mPayload1=new JSONObject();
JSONObject mPayload2=new JSONObject();
mPayload1.put("extra", mPayload2);
mPayload1.put("alert", "hello world");
mPayload2.put("phonenumber", "12345");
mPayload.put("android", mPayload1);
System.out.println(mPayload.toString());
connection.setDoOutput(true);
connection.setDoInput(true);
connection.setUseCaches(false);
connection.addRequestProperty("Content-Type","application/json;charset=UTF-8");
String authString = "**MY APP KEY**" + ":" + "**MASTER KEY**"; 

String authStringBase64 = new String(Base64.encodeBytes(authString.getBytes()));
authStringBase64 = authStringBase64.trim();

connection.addRequestProperty("Authorization", "Basic " + authStringBase64);
DataOutputStream wr = new DataOutputStream(connection.getOutputStream());
wr.write(mPayload.toString().getBytes());
wr.flush();
Log.d("print", "response code"+ connection.getResponseCode());
4

2 に答える 2

0

適切にエンコードされた AppId と秘密鍵を含む通知と共に、urbanairship サーバーに POST 要求を送信するだけです...

上記のリンクは、これのほとんどを行うライブラリへのリンクのようです。

サンプル コード、注: この例の PushNotificationObj は、プッシュの本文のフィールドを持つ Bean です。

        URL url = new URL(URBAN_AIRSHIP_API_URL);
        HTTPRequest req = new HTTPRequest(url, HTTPMethod.POST);

        String authString = ApplicationProperties.getUrbanAirshipAppId() + ":" + ApplicationProperties.getUrbanAirshipMasterSecret();

        String authStringBase64 = new String(Base64.encodeBase64(authString.getBytes()));
        authStringBase64 = authStringBase64.trim();

        req.addHeader(new HTTPHeader("Content-Type", "application/json"));
        req.addHeader(new HTTPHeader("Authorization", "Basic " + authStringBase64));

        ObjectMapper mapper = new ObjectMapper();
        ByteArrayOutputStream byteStream = new ByteArrayOutputStream();
        mapper.writeValue(byteStream, new PushNotificationObj(userEmail, message));

        req.setPayload(byteStream.toByteArray());

そして、リクエストを送信します...

于 2012-07-12T16:17:03.300 に答える
0

Urbanairship4j (Google Code で入手可能)を試してみてください。Google HTTP Java クライアントを使用するため、あらゆる Java 環境 (AppEngine、Android など) で完全に動作します。

于 2012-09-15T01:49:09.857 に答える