admin管理员组

文章数量:1538838

1 后台

  (1) 我后台是选择的多推的结构(可发单条和多条),更多的结构可以访问官网
  先说下我遇到的需求
  1 后台使用java给前台用户发送通知
  2发送的通知需要能够点击后跳转到app内的页面(需要带有必要的参数)

 //APP的名字
    public static String appName = "xxxxxxxxx";
    //google推送 json文件的地址
    public static String jsonPath = "xxxxxxx";
    //google推送上建立的数据库
    public static String dataUrl = "xxxxxxxxx";
    private static FirebaseApp firebaseApp = null;
        //获取AndroidConfig.Builder对象
    private static com.google.firebase.messaging.AndroidConfig.Builder androidConfigBuilder= AndroidConfig.builder();

    //获取AndroidNotification.Builder对象
    private static AndroidNotification.Builder androidNotifiBuilder=AndroidNotification.builder();
 public static boolean sendPushNotice1(String title, String description, List<String> tokens, String toPage, String jParm) {
        try {
            List<Message> msgs = new ArrayList<>();
            //设置Java代理,端口号是代理软件开放的端口,这个很重要。
            System.setProperty("proxyType", "4"); // 设置代理类型,4是指http
            System.setProperty("proxyPort", "1080"); // 设置代理的端口号
            System.setProperty("proxyHost", "127.0.0.1"); // 设置代理的ip地址
            System.setProperty("proxySet", "true"); // 使代理生效
            if(firebaseApp == null ){
                //初始化SDK
                initSDK();
            }
            for (int i = 0; i < tokens.size(); i++) {
                String token = tokens.get(i);
                androidNotifiBuilder.setTitle(title);// 设置消息标题
                androidNotifiBuilder.setBody(description);// 设置消息内容
                androidNotifiBuilder.setClickAction(toPage); //跳转页面的地址(前端需配置)
                AndroidNotification androidNotification=androidNotifiBuilder.build();
                if(jParm!=null){
                    JMap toJump1= JMap.create().put("jParm",jParm);//所带的参数
                    androidConfigBuilder.putAllData(toJump1);
                }
                androidConfigBuilder.setNotification(androidNotification);
                AndroidConfig androidConfig=androidConfigBuilder.build();
                logger.info(JSON.toJSONString(androidConfig));
                //构建消息内容
                Message message = Message.builder().setAndroidConfig(androidConfig)
                        .setToken(token)
                        .build();
                if (message != null) {
                    msgs.add(message);
                }
            }
            if (msgs.size() > 0) {
                //发送消息
                BatchResponse batchResponse = FirebaseMessaging.getInstance(firebaseApp).sendAll(msgs);
                logger.info("google推送结果:{}", batchResponse);
                if (batchResponse != null) {
                    return true;
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
            logger.error("google推送异常", e);
        }
        return false;
    }

    /**
     * 初始化SDK
     */
    public static void initSDK() throws IOException {
        FileInputStream serviceAccount = new FileInputStream(jsonPath);
        FirebaseOptions options = new FirebaseOptions.Builder()
                .setCredentials(GoogleCredentials.fromStream(serviceAccount))
                .setDatabaseUrl(dataUrl).build();
        //初始化firebaseApp
        firebaseApp = FirebaseApp.initializeApp(options);
    }

(2) 上边的代码已经很清楚了,踩的坑的话就是 做项目时没办法链接外网,在国外的服务器上可以(国外的api文档也太难看了)
(3) 如果有错误,一起讨论.

本文标签: 跳转后台页面通知app