オーロラプッシュ、実際には、あなたは、デバイスは、Android、IOS、winphoneを持ってサポートできるマルチマッチングを押し、サードパーティのプラットフォームのプッシュメッセージングに依存している、一人で、まだ我々は彼が何ができるかを知っていると言うことはできませんが、小さな例での外観をしましょう。
まず、第1の背景を使用するアプリケーションの設定、記録のAppKeyとマスターシークレット、Java開発者にログインし、オーロラサービスアカウントを登録します。
:第二に、「プッシュ設定」をクリックしてください
:セットのAndroidとiOS
、Androidアプリケーションパッケージは、独自の定義に名前を付けるデモ、Androidデベロッパービュー統合ガイド、プロジェクトに統合SDKをダウンロードしてください。
iOSアプリケーションパッケージ自身の定義に名前を付け、デモをダウンロードし、iOSデベロッパビュー統合ガイド、SDKには、プロジェクトに統合されます。
オーロラのユーザIDと結合インターフェース:三、AndroidとiOSのコールバック・インターフェースは、Java自身のビジネス内に設けられています。
首尾よく結合通知を送信した後、通知シミュレーションを送る:推定数はオーロラ背景によって返された値である1です。
第四には、プッシュショー履歴を送信した後:
V.これらは、開発者向けのサービスがメッセージをプッシュオーロラのシミュレーションプロセスです。
このプロセスは、我々はクールなJava開発のインターフェイスを冷却するために始めることができ、問題ではありません。必要なJSONデータをステッチオーロラプッシュ、それはコール・インタフェースをプッシュすることができます。
六、Javaのコアコード:
結合インターフェースの開発:
バインド従業員やオーロラIDは、我々は、ストア(AndroidとiOS)の下にあるすべての店舗をログに記録する携帯電話にすべての従業員をプッシュする必要があります。
ここで厄介な場所は、各移動端末リロードアプリ、オーロラidは私は確信して、これは別のオーロラ同じデバイスIDを生成するためにバインドされていないんだときに変化する可能性がある、または別のデバイスがオーロラ新しいIDを生成していること、です、その方法のIの使用は、これらのIDが結合されているが、ラインがどのように処理されるか、大きな牛がわからない、汚い多くのデータを持っています。
第二には、独自のビジネス・ロジック行く
JSONに必要なオーロラプッシュステッチ、第三に:
/**
* 组装极光推送专用json串
* @param alert
* @param registrationId
* @return json
*/
private JSONObject generateJson(String alert, List<String> registrationId,Map<String,Object> android_extras,Map<String,Object> ios_extras){
JSONObject json = new JSONObject();
JSONArray platform = new JSONArray();//平台
platform.add("android");
platform.add("ios");
JSONObject audience = new JSONObject();//推送目标
audience.put("registration_id", registrationId);
JSONObject notification = new JSONObject();//通知内容
JSONObject android = new JSONObject();//android通知内容
android.put("alert", alert);
android.put("extras", android_extras);//android额外参数
JSONObject ios = new JSONObject();//ios通知内容
ios.put("alert", alert);
ios.put("sound", "default");
ios.put("extras", ios_extras);//ios额外参数
notification.put("android", android);
notification.put("ios", ios);
JSONObject options = new JSONObject();//设置参数
options.put("time_to_live", Integer.valueOf(time_to_live));
options.put("apns_production", apns_production);
json.put("platform", platform);
json.put("audience", audience);
json.put("notification", notification);
json.put("options", options);
return json;
}
プッシュ:
@Value("${jiguang.appKey}")
private String appKey; //极光appKey
@Value("${jiguang.masterSecret}")
private String masterSecret; //极光secret
@Value("${jiguang.pushUrl}")
private String pushUrl; //极光推送接口url
@Value("${jiguang.apns_production}")
private String apns_production; //推送环境参数,设置true表示推送生产环境,false表示开发;默认推送生产环境
@Value("${jiguang.time_to_live}")
private String time_to_live; //离线消息保留时长,默认保留86400(1天),最长 10 天。设置为 0 表示不保留离线消息,只有推送当前在线的用户可以收到。
@Override
public ApiResponse jiGuangPush(JpushRequestModel jpushRequestModel) {
//构建极光推送所需json
log.info("极光推送带参:{}",jpushRequestModel);
JSONObject object = generateJson(jpushRequestModel.getAlert(),jpushRequestModel.getRegistrationId(),jpushRequestModel.getAndroid_extras(),jpushRequestModel.getIos_extras());
String data = object.toJSONString();
log.info("-------极光推送构建的json消息:{}",data);
//1.推送消息
log.info("---------appKey:{},---------masterSecret:{}",appKey,masterSecret);
String base64_auth_string = encryptBASE64(appKey + ":" + masterSecret);
String authorization = "Basic " + base64_auth_string;
log.info("Authorization值是:{}",authorization);
HttpPost httpPost = new HttpPost(pushUrl);
CloseableHttpClient client = HttpClients.createDefault();
CloseableHttpResponse response = null;
String result = "";
Map<String,Object> map = new HashMap<>();
try {
StringEntity entity = new StringEntity(data, "UTF-8");
entity.setContentType("application/json");
httpPost.setEntity(entity);
httpPost.setHeader("Authorization",authorization.trim());
log.info("--------开始调用极光推送push-----");
response = client.execute(httpPost);
result = EntityUtils.toString(response.getEntity(), "UTF-8");
log.info("--------push消息执行完毕-----,结果:{}",result);
JSONObject jsonObject = JSONObject.parseObject(result);
if(jsonObject.containsKey("error")){
log.info("针对极光id为" + model.getAudience().getRegistration_id() + "的信息推送失败!");
JSONObject error = JSONObject.parseObject(JSONObject.toJSONString(jsonObject.get("error")));
log.info("错误信息为:" + error.get("message").toString());
log.info("针对极光id为" + model.getAudience().getRegistration_id() + "的信息推送失败!");
map.put("error",error);
}else {
log.info("----------极光推送成功!!!!!");
map.put("sendno",jsonObject.get("sendno"));
map.put("msg_id",jsonObject.get("msg_id"));
}
} catch (Exception e) {
log.error("请求接口时偶遇异常,堆栈轨迹如下", e);
}
finally{
if(response != null){
try {
response.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(client != null){
try {
client.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return ApiResponse.builder().setData(map);
}
/**
* BASE64加密工具
*/
public static String encryptBASE64(String str) {
byte[] key = str.getBytes();
BASE64Encoder base64Encoder = new BASE64Encoder();
String strs = base64Encoder.encodeBuffer(key);
return strs;
}
オーロラプッシュ参考資料:https://docs.jiguang.cn/jpush/server/push/rest_api_v3_push/
オーロラプッシュケース:https://v.qq.com/x/page/m01923a24ec.html
要約:
- 公式文書は、私は主にその方法を共有するための良い学習ツール使用され、Paizhuanを歓迎します!
- 他の人が再利用が容易に実現することができます反映しながら、書き込みインタフェースは、十分に達成していない、我々はまた、使用のために、簡単に使いやすい独自のインタフェースかどうかを検討すべきです。(私たちは、コードを最適化するために継続する必要があります)
- モバイル開発者が注意する必要があります終了:証明書の本番環境を渡すために生産環境、パッケージ生産環境
- オーロラは、自分自身をプッシュすると、テストサービスは数の推定値を得るために通知を発行したオーロラのプラットフォームでは不安定ではありません心配、いずれかのソフトウェアの操作を行い、あまりにも頻繁にはありませんが、我々は唯一の、ユーザーのニーズを満たすために、100%を保証することはできませんより対照的に、類似のソフトウェアよりも、自分自身を選択することができます。