|
@@ -0,0 +1,331 @@
|
|
|
+package com.fdkankan.push;
|
|
|
+
|
|
|
+
|
|
|
+import cn.hutool.core.date.DateUtil;
|
|
|
+import com.alibaba.fastjson.JSONArray;
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.fdkankan.push.android.*;
|
|
|
+import com.fdkankan.push.ios.*;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+
|
|
|
+import java.util.Date;
|
|
|
+
|
|
|
+@Slf4j
|
|
|
+public class PushMessageConfig {
|
|
|
+ private String appkey = null;
|
|
|
+ private String appMasterSecret = null;
|
|
|
+ private String timestamp = null;
|
|
|
+ private PushClient client = new PushClient();
|
|
|
+
|
|
|
+ public static final String ANDROID_KEY = "5ee71c03dbc2ec076dd488cb";
|
|
|
+ public static final String ANDROID_SECRET = "gzw4r8frbhq6eigxrvgjkdrm7wgtu83g";
|
|
|
+ public static final String IOS_KEY = "5ee71ca9978eea081640f22a";
|
|
|
+ public static final String IOS_SECRET = "tpuhyojch16pcha2qmpidlbnzkielv9w";
|
|
|
+
|
|
|
+ //转台双目使用
|
|
|
+ public static final String ANDROID_KEY_Z = "60efd777a6f90557b7b97c25";
|
|
|
+ public static final String ANDROID_SECRET_Z = "ll85ov3qzeuas0ig7cw0v5bgzq1bdl07";
|
|
|
+ public static final String IOS_KEY_Z = "60efd7c9a6f90557b7b97d10";
|
|
|
+ public static final String IOS_SECRET_Z = "li62b5f3d9kn8idvy6qva3c5gyidmqwl";
|
|
|
+
|
|
|
+ public PushMessageConfig(String key, String secret) {
|
|
|
+ try {
|
|
|
+ appkey = key;
|
|
|
+ appMasterSecret = secret;
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ System.exit(1);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public void sendAndroidBroadcast() throws Exception {
|
|
|
+ AndroidBroadcast broadcast = new AndroidBroadcast(appkey,appMasterSecret);
|
|
|
+ broadcast.setTicker( "Android broadcast ticker");
|
|
|
+ broadcast.setTitle( "中文的title");
|
|
|
+ broadcast.setText( "Android broadcast text");
|
|
|
+ broadcast.goAppAfterOpen();
|
|
|
+ broadcast.setDisplayType(AndroidNotification.DisplayType.NOTIFICATION);
|
|
|
+ // TODO Set 'production_mode' to 'false' if it's a test device.
|
|
|
+ // For how to register a test device, please see the developer doc.
|
|
|
+ broadcast.setProductionMode();
|
|
|
+ // Set customized fields
|
|
|
+ broadcast.setExtraField("test", "helloworld");
|
|
|
+ //厂商通道相关参数
|
|
|
+ broadcast.setChannelActivity("your channel activity");
|
|
|
+ broadcast.setChannelProperties("abc");
|
|
|
+ client.send(broadcast);
|
|
|
+ }
|
|
|
+
|
|
|
+ public void sendAndroidUnicast(String token, String ticker, String title, String text, String url) throws Exception {
|
|
|
+ AndroidUnicast unicast = new AndroidUnicast(appkey,appMasterSecret);
|
|
|
+ // TODO Set your device token
|
|
|
+ unicast.setDeviceToken(token);
|
|
|
+ unicast.setTicker(ticker);
|
|
|
+ unicast.setTitle(title);
|
|
|
+ unicast.setText(text);
|
|
|
+ unicast.goUrlAfterOpen(url);
|
|
|
+ unicast.setDisplayType(AndroidNotification.DisplayType.NOTIFICATION);
|
|
|
+ // TODO Set 'production_mode' to 'false' if it's a test device.
|
|
|
+ // For how to register a test device, please see the developer doc.
|
|
|
+ unicast.setProductionMode();
|
|
|
+ // Set customized fields
|
|
|
+ unicast.setExtraField("test", "helloworld");
|
|
|
+ unicast.setChannelActivity("com.fdage.eight.module.EightPushMsgHandlerActivity");
|
|
|
+// unicast.setChannelProperties("abc");
|
|
|
+
|
|
|
+ client.send(unicast);
|
|
|
+ }
|
|
|
+
|
|
|
+ //转台相机
|
|
|
+ public void sendAndroidUnicast2(String token, String ticker, String title, String text, String url) throws Exception {
|
|
|
+ AndroidUnicast unicast = new AndroidUnicast(appkey,appMasterSecret);
|
|
|
+ // TODO Set your device token
|
|
|
+ unicast.setDeviceToken(token);
|
|
|
+ unicast.setTicker(ticker);
|
|
|
+ unicast.setTitle(title);
|
|
|
+ unicast.setText(text);
|
|
|
+ unicast.goUrlAfterOpen(url);
|
|
|
+ unicast.setDisplayType(AndroidNotification.DisplayType.NOTIFICATION);
|
|
|
+ // TODO Set 'production_mode' to 'false' if it's a test device.
|
|
|
+ // For how to register a test device, please see the developer doc.
|
|
|
+ unicast.setProductionMode();
|
|
|
+ // Set customized fields
|
|
|
+ unicast.setExtraField("test", "helloworld");
|
|
|
+ unicast.setChannelActivity("io.github.zileyuan.umeng_analytics_push.OfflineNotifyClickActivity");
|
|
|
+// unicast.setChannelProperties("abc");
|
|
|
+
|
|
|
+ client.send(unicast);
|
|
|
+ }
|
|
|
+
|
|
|
+ public void sendAndroidGroupcast() throws Exception {
|
|
|
+ AndroidGroupcast groupcast = new AndroidGroupcast(appkey,appMasterSecret);
|
|
|
+ /* TODO
|
|
|
+ * Construct the filter condition:
|
|
|
+ * "where":
|
|
|
+ * {
|
|
|
+ * "and":
|
|
|
+ * [
|
|
|
+ * {"tag":"test"},
|
|
|
+ * {"tag":"Test"}
|
|
|
+ * ]
|
|
|
+ * }
|
|
|
+ */
|
|
|
+ JSONObject filterJson = new JSONObject();
|
|
|
+ JSONObject whereJson = new JSONObject();
|
|
|
+ JSONArray tagArray = new JSONArray();
|
|
|
+ JSONObject testTag = new JSONObject();
|
|
|
+ JSONObject TestTag = new JSONObject();
|
|
|
+ testTag.put("tag", "test");
|
|
|
+ TestTag.put("tag", "Test");
|
|
|
+ tagArray.add(testTag);
|
|
|
+ tagArray.add(TestTag);
|
|
|
+ whereJson.put("and", tagArray);
|
|
|
+ filterJson.put("where", whereJson);
|
|
|
+
|
|
|
+ groupcast.setFilter(filterJson);
|
|
|
+ groupcast.setTicker( "Android groupcast ticker");
|
|
|
+ groupcast.setTitle( "中文的title");
|
|
|
+ groupcast.setText( "Android groupcast text");
|
|
|
+ groupcast.goAppAfterOpen();
|
|
|
+ groupcast.setDisplayType(AndroidNotification.DisplayType.NOTIFICATION);
|
|
|
+ groupcast.setChannelActivity("your channel activity");
|
|
|
+ // TODO Set 'production_mode' to 'false' if it's a test device.
|
|
|
+ // For how to register a test device, please see the developer doc.
|
|
|
+ groupcast.setProductionMode();
|
|
|
+ //厂商通道相关参数
|
|
|
+ groupcast.setChannelActivity("your channel activity");
|
|
|
+ groupcast.setChannelProperties("abc");
|
|
|
+ client.send(groupcast);
|
|
|
+ }
|
|
|
+
|
|
|
+ public void sendAndroidCustomizedcast() throws Exception {
|
|
|
+ AndroidCustomizedcast customizedcast = new AndroidCustomizedcast(appkey,appMasterSecret);
|
|
|
+ // TODO Set your alias here, and use comma to split them if there are multiple alias.
|
|
|
+ // And if you have many alias, you can also upload a file containing these alias, then
|
|
|
+ // use file_id to send customized notification.
|
|
|
+ customizedcast.setAlias("alias", "alias_type");
|
|
|
+ customizedcast.setTicker( "Android customizedcast ticker");
|
|
|
+ customizedcast.setTitle( "中文的title");
|
|
|
+ customizedcast.setText( "Android customizedcast text");
|
|
|
+ customizedcast.goAppAfterOpen();
|
|
|
+ customizedcast.setDisplayType(AndroidNotification.DisplayType.NOTIFICATION);
|
|
|
+ // TODO Set 'production_mode' to 'false' if it's a test device.
|
|
|
+ // For how to register a test device, please see the developer doc.
|
|
|
+ customizedcast.setProductionMode();
|
|
|
+ //厂商通道相关参数
|
|
|
+ customizedcast.setChannelActivity("your channel activity");
|
|
|
+ customizedcast.setChannelProperties("abc");
|
|
|
+ client.send(customizedcast);
|
|
|
+ }
|
|
|
+
|
|
|
+ public void sendAndroidCustomizedcastFile() throws Exception {
|
|
|
+ AndroidCustomizedcast customizedcast = new AndroidCustomizedcast(appkey,appMasterSecret);
|
|
|
+ // TODO Set your alias here, and use comma to split them if there are multiple alias.
|
|
|
+ // And if you have many alias, you can also upload a file containing these alias, then
|
|
|
+ // use file_id to send customized notification.
|
|
|
+ String fileId = client.uploadContents(appkey,appMasterSecret,"aa"+"\n"+"bb"+"\n"+"alias");
|
|
|
+ customizedcast.setFileId(fileId, "alias_type");
|
|
|
+ customizedcast.setTicker( "Android customizedcast ticker");
|
|
|
+ customizedcast.setTitle( "中文的title");
|
|
|
+ customizedcast.setText( "Android customizedcast text");
|
|
|
+ customizedcast.goAppAfterOpen();
|
|
|
+ customizedcast.setDisplayType(AndroidNotification.DisplayType.NOTIFICATION);
|
|
|
+ // TODO Set 'production_mode' to 'false' if it's a test device.
|
|
|
+ // For how to register a test device, please see the developer doc.
|
|
|
+ customizedcast.setProductionMode();
|
|
|
+ //厂商通道相关参数
|
|
|
+ customizedcast.setChannelActivity("your channel activity");
|
|
|
+ customizedcast.setChannelProperties("abc");
|
|
|
+ client.send(customizedcast);
|
|
|
+ }
|
|
|
+
|
|
|
+ public void sendAndroidFilecast() throws Exception {
|
|
|
+ AndroidFilecast filecast = new AndroidFilecast(appkey,appMasterSecret);
|
|
|
+ // TODO upload your device tokens, and use '\n' to split them if there are multiple tokens
|
|
|
+ String fileId = client.uploadContents(appkey,appMasterSecret,"aa"+"\n"+"bb");
|
|
|
+ filecast.setFileId( fileId);
|
|
|
+ filecast.setTicker( "Android filecast ticker");
|
|
|
+ filecast.setTitle( "中文的title");
|
|
|
+ filecast.setText( "Android filecast text");
|
|
|
+ filecast.goAppAfterOpen();
|
|
|
+ filecast.setDisplayType(AndroidNotification.DisplayType.NOTIFICATION);
|
|
|
+ //厂商通道相关参数
|
|
|
+ filecast.setChannelActivity("your channel activity");
|
|
|
+ filecast.setChannelProperties("abc");
|
|
|
+ client.send(filecast);
|
|
|
+ }
|
|
|
+
|
|
|
+ public void sendIOSBroadcast() throws Exception {
|
|
|
+ IOSBroadcast broadcast = new IOSBroadcast(appkey,appMasterSecret);
|
|
|
+ //alert值设置为字符串
|
|
|
+ //broadcast.setAlert("IOS 广播测试");
|
|
|
+ //alert的值设置为字典
|
|
|
+// broadcast.setAlert("今日天气" , "" , "今日可能下雨🌂");
|
|
|
+ broadcast.setBadge( 0);
|
|
|
+ broadcast.setSound( "default");
|
|
|
+ // TODO set 'production_mode' to 'true' if your app is under production mode
|
|
|
+ broadcast.setTestMode();
|
|
|
+ // Set customized fields
|
|
|
+ broadcast.setCustomizedField("test", "helloworld");
|
|
|
+ client.send(broadcast);
|
|
|
+ }
|
|
|
+
|
|
|
+ public void sendIOSUnicast(String token, String title ,String subtitle , String body, String url) throws Exception {
|
|
|
+ IOSUnicast unicast = new IOSUnicast(appkey,appMasterSecret);
|
|
|
+ // TODO Set your device token
|
|
|
+ unicast.setDeviceToken(token);
|
|
|
+ //alert值设置为字符串
|
|
|
+ //unicast.setAlert("IOS 单播测试");
|
|
|
+ //alert的值设置为字典
|
|
|
+ unicast.setAlert(title, subtitle, body, url);
|
|
|
+// unicast.setBadge( 0);
|
|
|
+ unicast.setSound( "default");
|
|
|
+ // TODO set 'production_mode' to 'true' if your app is under production mode
|
|
|
+ unicast.setProductionMode();
|
|
|
+// unicast.setTestMode();
|
|
|
+ unicast.setDescription(title);
|
|
|
+ unicast.setExpireTime(DateUtil.formatTime(DateUtil.offsetDay(new Date(), 1)));
|
|
|
+ // Set customized fields
|
|
|
+// unicast.setCustomizedField("url", url);
|
|
|
+ client.send(unicast);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public void sendIOSGroupcast() throws Exception {
|
|
|
+ IOSGroupcast groupcast = new IOSGroupcast(appkey,appMasterSecret);
|
|
|
+ /* TODO
|
|
|
+ * Construct the filter condition:
|
|
|
+ * "where":
|
|
|
+ * {
|
|
|
+ * "and":
|
|
|
+ * [
|
|
|
+ * {"tag":"iostest"}
|
|
|
+ * ]
|
|
|
+ * }
|
|
|
+ */
|
|
|
+ JSONObject filterJson = new JSONObject();
|
|
|
+ JSONObject whereJson = new JSONObject();
|
|
|
+ JSONArray tagArray = new JSONArray();
|
|
|
+ JSONObject testTag = new JSONObject();
|
|
|
+ testTag.put("tag", "iostest");
|
|
|
+ tagArray.add(testTag);
|
|
|
+ whereJson.put("and", tagArray);
|
|
|
+ filterJson.put("where", whereJson);
|
|
|
+ log.info(filterJson.toString());
|
|
|
+
|
|
|
+ // Set filter condition into rootJson
|
|
|
+ groupcast.setFilter(filterJson);
|
|
|
+ //groupcast.setAlert("IOS 组播测试");
|
|
|
+ //alert的值设置为字典
|
|
|
+// groupcast.setAlert("今日天气" , "subtitle" , "今日可能下雨🌂");
|
|
|
+ groupcast.setBadge( 0);
|
|
|
+ groupcast.setSound( "default");
|
|
|
+ // TODO set 'production_mode' to 'true' if your app is under production mode
|
|
|
+ groupcast.setTestMode();
|
|
|
+ client.send(groupcast);
|
|
|
+ }
|
|
|
+
|
|
|
+ public void sendIOSCustomizedcast() throws Exception {
|
|
|
+ IOSCustomizedcast customizedcast = new IOSCustomizedcast(appkey,appMasterSecret);
|
|
|
+ // TODO Set your alias and alias_type here, and use comma to split them if there are multiple alias.
|
|
|
+ // And if you have many alias, you can also upload a file containing these alias, then
|
|
|
+ // use file_id to send customized notification.
|
|
|
+ customizedcast.setAlias("alias", "alias_type");
|
|
|
+ //customizedcast.setAlert("IOS 个性化测试");
|
|
|
+ //alert的值设置为字典
|
|
|
+// customizedcast.setAlert("今日天气" , "" , "今日可能下雨🌂");
|
|
|
+ customizedcast.setBadge( 0);
|
|
|
+ customizedcast.setSound( "default");
|
|
|
+ // TODO set 'production_mode' to 'true' if your app is under production mode
|
|
|
+ customizedcast.setTestMode();
|
|
|
+ client.send(customizedcast);
|
|
|
+ }
|
|
|
+
|
|
|
+ public void sendIOSFilecast() throws Exception {
|
|
|
+ IOSFilecast filecast = new IOSFilecast(appkey,appMasterSecret);
|
|
|
+ // TODO upload your device tokens, and use '\n' to split them if there are multiple tokens
|
|
|
+ String fileId = client.uploadContents(appkey,appMasterSecret,"aa"+"\n"+"bb");
|
|
|
+ filecast.setFileId( fileId);
|
|
|
+ //filecast.setAlert("IOS 文件播测试");
|
|
|
+ //alert的值设置为字典
|
|
|
+// filecast.setAlert("今日天气" , "" , "今日可能下雨🌂");
|
|
|
+ filecast.setBadge( 0);
|
|
|
+ filecast.setSound( "default");
|
|
|
+ // TODO set 'production_mode' to 'true' if your app is under production mode
|
|
|
+ filecast.setTestMode();
|
|
|
+ client.send(filecast);
|
|
|
+ }
|
|
|
+
|
|
|
+ public static void main(String[] args) {
|
|
|
+ // TODO set your appkey and master secret here
|
|
|
+ //安卓
|
|
|
+// Demo demo = new Demo(ANDROID_KEY, ANDROID_SECRET);
|
|
|
+ //ios
|
|
|
+ PushMessageConfig pushMessageConfig = new PushMessageConfig(IOS_KEY, IOS_SECRET);
|
|
|
+ try {
|
|
|
+// demo.sendAndroidUnicast("AneqkEZahjbW3cF7gu8juNYqz54ZFfK7kjMpTOiQL9dl",
|
|
|
+// "测试项目计算完成", "四维看看Pro", "您上传的测试项目计算完成,点击查看",
|
|
|
+// "https://test.4dkankan.com/smobile.html?m=t-e9uHHdn");
|
|
|
+ pushMessageConfig.sendIOSUnicast("ec61a2aa52673c96c12024e07ce267e391ca560e0c60f15ee09e65c8843ef7f4",
|
|
|
+ "四维看看Pro", "测试项目计算完成", "您上传的测试项目计算完成,点击查看",
|
|
|
+ "https://test.4dkankan.com/smobile.html?m=t-e9uHHdn");
|
|
|
+ /* TODO these methods are all available, just fill in some fields and do the test
|
|
|
+ * demo.sendAndroidCustomizedcastFile();
|
|
|
+ * demo.sendAndroidBroadcast();
|
|
|
+ * demo.sendAndroidGroupcast();
|
|
|
+ * demo.sendAndroidCustomizedcast();
|
|
|
+ * demo.sendAndroidFilecast();
|
|
|
+ *
|
|
|
+ * demo.sendIOSBroadcast();
|
|
|
+ * demo.sendIOSUnicast();
|
|
|
+ * demo.sendIOSGroupcast();
|
|
|
+ * demo.sendIOSCustomizedcast();
|
|
|
+ * demo.sendIOSFilecast();
|
|
|
+ */
|
|
|
+ } catch (Exception ex) {
|
|
|
+ ex.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+}
|