java --推送

最近工程作完了,關於推送作個總結java

公司用的是umeng推送,關於umneg推送的介紹,請移步官方文檔。android

使用umeng推送步驟ios

1.添加jar包
json

公司使用的maven,因此將以下代碼添加到pom.xml文件中app

        <dependency>
            <groupId>com.umeng.message</groupId>
            <artifactId>push</artifactId>
            <version>0.0.1</version>
        </dependency>

2.添加成功,以下圖maven


3.實現部分代碼以下測試

/**    
 程序名     SendPush.java
 程序功     推送
 做成者                  xxx
 做成日期    2015-11-25
 ======================修改履歷======================
 項目名                    狀態            做成者        做成日期
 --------------------------------------------------
 caren                新規            xxx        2015-11-25
 =================================================
 */
package com.cheqiren.caren.util;


import net.sf.json.JSONObject;

import com.cheqiren.caren.model.SendMsg;

import push.android.AndroidBroadcast;
import push.android.AndroidUnicast;
import push.ios.IOSBroadcast;
import push.ios.IOSUnicast;

public class SendPush {
    
    private static final String iosAppKey = "56274627e0f55ad9f9002443";
    private static final String iosAppMasterSecret = "lt63hy4kdmkshlxsr6mehyj1qnxftgbj";
    
    private static final String androidAppKey = "5652a952e0f55a772c0003b3";
    private static final String androidAppMasterSecret = "x3ae69jkhvi68mziobvcp2wtbr0cs97t";
    
    /**
     * 方法名        androidBroadcast(SendMsg androidMsg)
     * 方法功能        android廣播
     * @param         androidMsg
     * @return
     */
    public static boolean androidBroadcast(SendMsg androidMsg){
        AndroidBroadcast broadcast = new AndroidBroadcast();
        boolean result = false;
        
        broadcast.setAppMasterSecret(androidAppMasterSecret);
        String timestamp = Integer.toString((int)(System.currentTimeMillis() / 1000));
        try{
            // 必填 應用惟一標識
            broadcast.setPredefinedKeyValue("appkey", androidAppKey);
            // 必填 時間戳,10位或者13位都可,時間戳有效期爲10分鐘
            broadcast.setPredefinedKeyValue("timestamp", timestamp);
            // 必填 消息發送類型
            broadcast.setPredefinedKeyValue("type", "broadcast");
            // 必填 消息類型 notification-通知,message-消息
            broadcast.setPredefinedKeyValue("display_type", "notification");
            // 必填 通知欄提示文字
            broadcast.setPredefinedKeyValue("ticker", androidMsg.getTicker());
            // 必填 通知標題
            broadcast.setPredefinedKeyValue("title", androidMsg.getTitle());
            // 必填 通知文字描述 
            broadcast.setPredefinedKeyValue("text", androidMsg.getSendMessage());
            // 點擊"通知"的後續行爲
            broadcast.setPredefinedKeyValue("after_open", "go_custom");
            JSONObject jsonObject = JSONObject.fromObject(androidMsg);
            broadcast.setPredefinedKeyValue("custom", jsonObject.toString());
            // 可選 發送消息描述,建議填寫。
            broadcast.setPredefinedKeyValue("description", androidMsg.getDescription());
            // 可選 正式/測試模式。測試模式下,廣播/組播只會將消息發給測試設備
            broadcast.setPredefinedKeyValue("production_mode", "true");
            result = broadcast.send();
            
        }catch(Exception e){
            e.printStackTrace();
        }
        return result;
    }
    
    /**
     * 方法名        androidUnicast(SendPushInfo androidMsg,String deviceTokens)
     * 方法功能        android單播
     * @param         androidMsg
     * @param         deviceTokens
     * @return
     */
    public static boolean androidUnicast(SendMsg androidMsg,String deviceTokens){
        
        AndroidUnicast unicast = new AndroidUnicast();
        boolean result = false;
        unicast.setAppMasterSecret(androidAppMasterSecret);
        String timestamp = Integer.toString((int)(System.currentTimeMillis() / 1000));
        try{
            // 必填 應用惟一標識
            unicast.setPredefinedKeyValue("appkey", androidAppKey);
            // 必填 時間戳,10位或者13位都可,時間戳有效期爲10分鐘
            unicast.setPredefinedKeyValue("timestamp", timestamp);
            // 必填 消息發送類型
            unicast.setPredefinedKeyValue("type", "unicast");
            // 必填 消息類型 notification-通知,message-消息
            unicast.setPredefinedKeyValue("display_type", "notification");
            // 必填 通知欄提示文字
            unicast.setPredefinedKeyValue("ticker", androidMsg.getTicker());
            // 必填 通知標題
            unicast.setPredefinedKeyValue("title", androidMsg.getTitle());
            // 必填 通知文字描述 
            unicast.setPredefinedKeyValue("text", androidMsg.getSendMessage());
            //可選 設備惟一表示
            unicast.setPredefinedKeyValue("device_tokens", deviceTokens);
            // 點擊"通知"的後續行爲
            unicast.setPredefinedKeyValue("after_open", "go_custom");
            JSONObject jsonObject = JSONObject.fromObject(androidMsg);
            unicast.setPredefinedKeyValue("custom", jsonObject.toString());
            // 可選 發送消息描述,建議填寫。
            unicast.setPredefinedKeyValue("description", androidMsg.getDescription());
            // 可選 正式/測試模式。測試模式下,廣播/組播只會將消息發給測試設備
            unicast.setPredefinedKeyValue("production_mode", "true");
            result = unicast.send();
        }catch(Exception e){
            e.printStackTrace();
        }
        return result;
    }
    
    /**
     * 方法名        androidListcast(SendMsg androidMsg,String deviceTokens)
     * 方法功能        android列播
     * @param         androidMsg
     * @param         deviceTokens
     * @return
     */
    public static boolean androidListcast(SendMsg androidMsg,String deviceTokens){
        
        AndroidUnicast unicast = new AndroidUnicast();
        boolean result = false;
        unicast.setAppMasterSecret(androidAppMasterSecret);
        String timestamp = Integer.toString((int)(System.currentTimeMillis() / 1000));
        try{
            // 必填 應用惟一標識
            unicast.setPredefinedKeyValue("appkey", androidAppKey);
            // 必填 時間戳,10位或者13位都可,時間戳有效期爲10分鐘
            unicast.setPredefinedKeyValue("timestamp", timestamp);
            // 必填 消息發送類型
            unicast.setPredefinedKeyValue("type", "listcast");
            // 必填 消息類型 notification-通知,message-消息
            unicast.setPredefinedKeyValue("display_type", "notification");
            // 必填 通知欄提示文字
            unicast.setPredefinedKeyValue("ticker", androidMsg.getTicker());
            // 必填 通知標題
            unicast.setPredefinedKeyValue("title", androidMsg.getTitle());
            // 必填 通知文字描述 
            unicast.setPredefinedKeyValue("text", androidMsg.getSendMessage());
            //可選 設備惟一表示
            unicast.setPredefinedKeyValue("device_tokens", deviceTokens);
            // 點擊"通知"的後續行爲
            unicast.setPredefinedKeyValue("after_open", "go_custom");
            JSONObject jsonObject = JSONObject.fromObject(androidMsg);
            unicast.setPredefinedKeyValue("custom", jsonObject.toString());
            // 可選 發送消息描述,建議填寫。
            unicast.setPredefinedKeyValue("description", androidMsg.getDescription());
            // 可選 正式/測試模式。測試模式下,廣播/組播只會將消息發給測試設備
            unicast.setPredefinedKeyValue("production_mode", "true");
            result = unicast.send();
        }catch(Exception e){
            e.printStackTrace();
        }
        return result;
    }
    
    /**
     * 方法名        iosBroadcast(SendMsg iosMsg)
     * 方法功能        ios廣播
     * @param         iosMsg
     * @return
     */
    public static boolean iosBroadcast(SendMsg iosMsg){
        
        IOSBroadcast broadcast = new IOSBroadcast();
        boolean result = false;
        broadcast.setAppMasterSecret(iosAppMasterSecret);
        String timestamp = Integer.toString((int)(System.currentTimeMillis() / 1000));
        try{
            // 必填 應用惟一標識
            broadcast.setPredefinedKeyValue("appkey", iosAppKey);
            // 必填 時間戳,10位或者13位都可,時間戳有效期爲10分鐘
            broadcast.setPredefinedKeyValue("timestamp", timestamp);
            // 必填 消息發送類型
            broadcast.setPredefinedKeyValue("type", "broadcast");
            // 必填
            broadcast.setPredefinedKeyValue("alert", iosMsg.getSendMessage());
            broadcast.setPredefinedKeyValue("sound", "default");
            // 可選 發送消息描述,建議填寫。
            broadcast.setPredefinedKeyValue("description", iosMsg.getDescription());
            // 可選 正式/測試模式。測試模式下,廣播/組播只會將消息發給測試設備
            broadcast.setPredefinedKeyValue("production_mode", "true");
            // 點擊"通知"的後續行爲
            JSONObject jsonObject = JSONObject.fromObject(iosMsg);
            broadcast.setCustomizedField("custom", jsonObject.toString());
            result = broadcast.send();
        }
        catch(Exception e){
            e.printStackTrace();
        }
        return result;
    }
    
    /**
     * 方法名        iosUnicast(SendMsg iosMsg,String deviceTokens)
     * 方法功能        ios單播
     * @param         iosMsg
     * @param         deviceTokens
     * @return
     */
    public static boolean iosUnicast(SendMsg iosMsg,String deviceTokens){
        
        IOSUnicast unicast = new IOSUnicast();
        boolean result = false;
        unicast.setAppMasterSecret(iosAppMasterSecret);
        String timestamp = Integer.toString((int)(System.currentTimeMillis() / 1000));
        try{
            // 必填 應用惟一標識
            unicast.setPredefinedKeyValue("appkey", iosAppKey);
            // 必填 時間戳,10位或者13位都可,時間戳有效期爲10分鐘
            unicast.setPredefinedKeyValue("timestamp", timestamp);
            // 必填 消息發送類型
            unicast.setPredefinedKeyValue("type", "unicast");
            // 必填
            unicast.setPredefinedKeyValue("alert", iosMsg.getSendMessage());
            unicast.setPredefinedKeyValue("sound", "default");
            //可選 設備惟一表示
            unicast.setPredefinedKeyValue("device_tokens", deviceTokens);
            // 可選 發送消息描述,建議填寫。
            unicast.setPredefinedKeyValue("description", iosMsg.getDescription());
            // 可選 正式/測試模式。測試模式下,廣播/組播只會將消息發給測試設備
            unicast.setPredefinedKeyValue("production_mode", "true");
            // 點擊"通知"的後續行爲
            JSONObject jsonObject = JSONObject.fromObject(iosMsg);
            unicast.setCustomizedField("custom", jsonObject.toString());
            result = unicast.send();
        }
        catch(Exception e){
            e.printStackTrace();
        }
        return result;
    }
    
    /**
     * 方法名        iosGroupcast(SendMsg iosMsg,String deviceTokens)
     * 方法功能        ios組播
     * @param         iosMsg
     * @param         deviceTokens
     * @return
     */
    public static boolean iosListcast(SendMsg iosMsg,String deviceTokens){
        
        IOSUnicast unicast = new IOSUnicast();
        boolean result = false;
        unicast.setAppMasterSecret(iosAppMasterSecret);
        String timestamp = Integer.toString((int)(System.currentTimeMillis() / 1000));
        try{
            // 必填 應用惟一標識
            unicast.setPredefinedKeyValue("appkey", iosAppKey);
            // 必填 時間戳,10位或者13位都可,時間戳有效期爲10分鐘
            unicast.setPredefinedKeyValue("timestamp", timestamp);
            // 必填 消息發送類型
            unicast.setPredefinedKeyValue("type", "listcast");
            // 必填
            unicast.setPredefinedKeyValue("alert", iosMsg.getSendMessage());
            unicast.setPredefinedKeyValue("sound", "default");
            //可選 設備惟一表示
            unicast.setPredefinedKeyValue("device_tokens", deviceTokens);
            // 可選 發送消息描述,建議填寫。
            unicast.setPredefinedKeyValue("description", iosMsg.getDescription());
            // 可選 正式/測試模式。測試模式下,廣播/組播只會將消息發給測試設備
            unicast.setPredefinedKeyValue("production_mode", "true");
            // 點擊"通知"的後續行爲
            JSONObject jsonObject = JSONObject.fromObject(iosMsg);
            unicast.setCustomizedField("custom", jsonObject.toString());
            result = unicast.send();
        }
        catch(Exception e){
            e.printStackTrace();
        }
        return result;
    }
}

4.調用部分代碼以下code

            // 推送類型 單播
            String deviceTokens = getDeviceTokens(receiveUserId);
            boolean sendFlagAndroid = SendPush.androidUnicast(record, deviceTokens);
            boolean sendFlagIOS = SendPush.iosUnicast(record, deviceTokens);
            if(!sendFlagAndroid && !sendFlagIOS){
                // 發送失敗
                resInt = 0;
                record.setSendResult(1);
                sendMsgMapper.updateByPrimaryKeySelective(record);
            }else{
                // 發送成功
                resInt = 1;
                record.setSendResult(0);
                sendMsgMapper.updateByPrimaryKeySelective(record);
            }
相關文章
相關標籤/搜索