android 호출 극광 푸 시 SDK 설정 태그 와 Alias 도구 클래스 - 자바 웹 호출 극광 푸 시 웹 SDK 전송 푸 시 메시지 도구 클래스

56012 단어
시작 에 쓰기: 극광 푸 시 통합 은 매우 간단 합 니 다. 현재 프로젝트 에 서 는 푸 시 알림, 문자 알림, 새로 고침 인터페이스, 구체 적 인 집적 주 소 를 받 습 니 다.
http://docs.jiguang.cn/jpush/client/Android/android_guide/
다음은 호출 에 관 한 도구 류 입 니 다.
1. Android jpush Utils: 극광 문서 api 3.0.7 을 기반 으로 통합 되 었 습 니 다.
원본 코드:
**
 *   :JPushutils.class
 *   :    
 * Created by:   on 2017/8/24 0024.
 * --------------------------------------
 *     :
 *   :
 * Modify by:
 */

public class JPushutils extends JPushMessageReceiver {
    public static final String PROJECTNAME = "PB";//      

    /**
     *       app  
     *             。  ,        ,              
     *     ,       。             。
     * @param alias
     */
    public static void setAlias(Context conn, String alias) {
        setJpushAlias(conn,0x1,Validate.isNullTodefault(alias,PROJECTNAME));
    }
    /**
     *       app  
     */
    public static void deleteAlias(Context conn) {
        deleteJpushAlias(conn,0x2);
    }
    /**
     *       app  
     */
    public static void getAlias(Context conn ) {
        getJpushAlias(conn,0x3);
    }
    /**
     *     
     *            。              tag ,       。
     */
    public static void setTags(Context conn,final String[] Tags) {
        setJpushTags(conn,0x4,Tags);
    }
    /**
     *     
     */
    public static void addTags(Context conn,final String[] Tags) {
        addJpushTags(conn,0x5,Tags);
    }
    /**
     *     
     */
    public static void deleteTags(Context conn,final String[] Tags) {
        deleteJpushTags(conn,0x6,Tags);
    }

    /**
     *       
     */
    public static void cleanTags(Context conn) {
        cleanJpushTags(conn,0x7);
    }
    /**
     *       
     */
    public static void getAllTags( Context conn) {
        getAllJpushTags(conn,0x8);
    }

    private static void setJpushAlias( Context conn,int sequence,final String alias) {
        JPushInterface.setAlias(conn,sequence,alias);
    }
    private static void deleteJpushAlias(Context conn,int sequence) {
        JPushInterface.deleteAlias(conn, sequence);
    }
    private static void getJpushAlias(Context conn,int sequence) {
        JPushInterface.getAlias(conn,sequence);
    }

    //    
    private static void setJpushTags(Context conn,int sequence,final String[] Tags){
        Set set = new HashSet<>();
        for (int i = 0; i < Tags.length; i++) {
            set.add(Tags[i]);
        }
        JPushInterface.setTags(conn,sequence,set);
    }
    private static void addJpushTags(Context conn,int sequence,final String[] Tags){
        Set set = new HashSet<>();
        for (int i = 0; i < Tags.length; i++) {
            set.add(Tags[i]);
        }
        JPushInterface.addTags(conn,sequence,set);
    }
    private static void deleteJpushTags(Context conn,int sequence,final String[] Tags){
        Set set = new HashSet<>();
        for (int i = 0; i < Tags.length; i++) {
            set.add(Tags[i]);
        }
        JPushInterface.deleteTags(conn,sequence,set);
    }
    private static void cleanJpushTags(Context conn,int sequence){
        JPushInterface.cleanTags(conn,sequence);
    }
    private static void getAllJpushTags(Context conn,int sequence){
        JPushInterface.getAllTags(conn,sequence);
    }

    @Override
    public void onAliasOperatorResult(Context context, JPushMessage jPushMessage) {
        switch (jPushMessage.getSequence()){
            case 0x1:
                if(jPushMessage.getErrorCode()==0)
                    KL.d("  Alias  ");
                else
                    KL.d("  Alias  ");
                break;
            case 0x2:
                if(jPushMessage.getErrorCode()==0)
                    KL.d("  Alias  ");
                else
                    KL.d("  Alias  ");
                break;
            case 0x3:
                if(jPushMessage.getErrorCode()==0)
                    KL.d("Alias :"+jPushMessage.getAlias());
                else
                    KL.d("  Alias  ");
                break;
        }
        super.onAliasOperatorResult(context, jPushMessage);
    }

    @Override
    public void onTagOperatorResult(Context context, JPushMessage jPushMessage) {
        switch (jPushMessage.getSequence()){
            case 0x4:
                if(jPushMessage.getErrorCode()==0)
                    KL.d("  Tag  ");
                else
                    KL.d("  Tag  ");
                break;
            case 0x5:
                if(jPushMessage.getErrorCode()==0)
                    KL.d("  Tag  ");
                else
                    KL.d("  Tag  ");
                break;
            case 0x6:
                if(jPushMessage.getErrorCode()==0)
                    KL.d("  Tag  ");
                else
                    KL.d("  Tag  ");
                break;
            case 0x7:
                if(jPushMessage.getErrorCode()==0)
                    KL.d("    Tag  ");
                else
                    KL.d("    Tag  ");
                break;
            case 0x8:
                if(jPushMessage.getErrorCode()==0)
                    KL.d("    Tag  ,Tags:"+jPushMessage.getTags().toString());
                else
                    KL.d("    Tag  ");
                break;
        }
        super.onTagOperatorResult(context, jPushMessage);
    }

주: 도구 류 자체 가 극광 푸 시 에서 계승 한 라디오 수신 기 이기 때문에 태그 와 Alias 작업 이 성공 적 으로 이 루어 졌 는 지 에 대한 메 시 지 를 되 돌려 주 는 기능 이 있 습 니 다.그래서 mainfests 파일 에 라디오 수신 을 등록 해 야 합 니 다.
    android:name=".util.JPushutils"
    android:enabled="true"
    android:exported="false">
    
        android:name="cn.jpush.android.intent.RECEIVE_MESSAGE" />

        android:name="com.house" />
    

2.java Web  :jPushUtils
/**
 *           
 * author:  
 * controller     : 
 *      :
 *  JPush.getInstance().sendPush(String alert);
 *      ,   ,     。  :    ,     
 *  
 *  JPush.getInstance().sendPush(String userID, String alert, String mklx);
 *      ,     ,      。   :       :     ,       userID,    ,    。           ,    
 *  
 *  JPush.getInstance().sendPush(String userID, String json) 
 *         :          ,      ,          ,              。   :       :     ,      userID,json   。  
 *  json   : {"success":"true","items":[{"mklx":"1","dspsl":"3"},{"mklx":"2","dspsl":"3"}]}
 *  
 * @   by    2017 8 10  
 */
public class JPush {
   protected static final Logger LOG = LoggerFactory.getLogger(JPush.class);

   private static JPush jpush;

   public static JPush getInstance() {
//    if (jpush == null)
         return new JPush();
//    return jpush;
   }

   /**
    *        
    * 
    * @throws APIRequestException
    */
   public void sendPush(String alert) {
      JPushClient jpushClient = new JPushClient(Params.masterSecret, Params.appKey, null, ClientConfig.getInstance());
      //        
      PushPayload payload = buildPushObject_all_all_alert(alert);
      try {
         System.out.println(payload.toString());
         PushResult result = jpushClient.sendPush(payload);
         System.out.println(result + "................................");
         LOG.info("Got result - " + result);
      } catch (APIConnectionException e) {
         LOG.error("Connection error. Should retry later. ", e);
      } catch (APIRequestException e) {
         LOG.error("Error response from JPush server. Should review and fix it. ", e);
         LOG.error("        ,   :           SDK      。    ,         app,        ,         ");
         LOG.info("HTTP Status: " + e.getStatus());
         LOG.info("Error Code: " + e.getErrorCode());
         LOG.info("Error Message: " + e.getErrorMessage());
         LOG.info("Msg ID: " + e.getMsgId());
      }
   }
   
   
   /**
    *        
    * @param tags
    *                  
    * @param alert
    *                  
    * @param mklx
    *               
    */
   public void sendPushByTagsone(String tags,String alert,String mklx) {
      JPushClient jpushClient = new JPushClient(Params.masterSecret, Params.appKey, null, ClientConfig.getInstance());
      //        
      PushPayload payload = buildPushObject_all_tags_alert(tags,alert,mklx);
      try {
         System.out.println(payload.toString());
         PushResult result = jpushClient.sendPush(payload);
         System.out.println(result + "................................");
         if(200==result.getResponseCode())
            System.out.println("    ");
         else
            System.out.println("    ");
         LOG.info("Got result - " + result);
      } catch (APIConnectionException e) {
         LOG.error("Connection error. Should retry later. ", e);
      } catch (APIRequestException e) {
         LOG.error("Error response from JPush server. Should review and fix it. ", e);
         LOG.error("        ,   :           SDK      。    ,         app,        ,         ");
         LOG.info("HTTP Status: " + e.getStatus());
         LOG.info("Error Code: " + e.getErrorCode());
         LOG.info("Error Message: " + e.getErrorMessage());
         LOG.info("Msg ID: " + e.getMsgId());
      }
   }
   /**
    *       :  android_ios,    ,      ALERT。      mklx——"    "
    * 
    * @return
    */
   private PushPayload buildPushObject_all_tags_alert(String tag,String alert, String mklx) {
      return PushPayload.newBuilder().setPlatform(Platform.android_ios())//   :android_ios
            .setAudience(Audience.tag(tag))//   ,              ,            
            .setNotification(Notification.newBuilder().setAlert(alert)
                  .addPlatformNotification(AndroidNotification.newBuilder()
                        // .setTitle(TITLE)//android   ,  app      
                        .addExtra("mklx", mklx).build())
                  .addPlatformNotification(IosNotification.newBuilder()
                        // .setBadge(5)//ios    ,     N      
                        .addExtra("mklx", mklx).build())
                  .build())
            .build();
   }
   

   /**
    *        
    * 
    * @param userID
    *              ID
    * @param alert
    *                
    * @param mklx
    *                
    * @throws APIRequestException
    */
   public void sendPush(String userID, String alert, String mklx) {
      JPushClient jpushClient = new JPushClient(Params.masterSecret, Params.appKey, null, ClientConfig.getInstance());
      //        
      PushPayload payload = buildPushObject_all_alias_alert(userID, alert, mklx);
      try {
         System.out.println(payload.toString());
         PushResult result = jpushClient.sendPush(payload);
         System.out.println(result + "................................");
         LOG.info("Got result - " + result);
      } catch (APIConnectionException e) {
         LOG.error("Connection error. Should retry later. ", e);
      } catch (APIRequestException e) {
         LOG.error("Error response from JPush server. Should review and fix it. ", e);
         LOG.error("        ,   :           SDK      。    ,         app,        ,         ");
         LOG.info("HTTP Status: " + e.getStatus());
         LOG.info("Error Code: " + e.getErrorCode());
         LOG.info("Error Message: " + e.getErrorMessage());
         LOG.info("Msg ID: " + e.getMsgId());
      }
   }

   /**
    *        ,           
    * 
    * @param userID
    *              ID
    * @param json
    *                
    * @throws APIRequestException
    */
   public void sendPush(String userID, String json) {
      JPushClient jpushClient = new JPushClient(Params.masterSecret, Params.appKey, null, ClientConfig.getInstance());
      //        
      PushPayload payload = buildPushObject_messageWithExtras(userID, json);
      try {
         System.out.println(payload.toString());
         PushResult result = jpushClient.sendPush(payload);
         System.out.println(result + "................................");
         LOG.info("Got result - " + result);
      } catch (APIConnectionException e) {
         LOG.error("Connection error. Should retry later. ", e);
      } catch (APIRequestException e) {
         LOG.error("Error response from JPush server. Should review and fix it. ", e);
         LOG.error("        ,   :           SDK      。    ,         app,        ,         ");
         LOG.info("HTTP Status: " + e.getStatus());
         LOG.info("Error Code: " + e.getErrorCode());
         LOG.info("Error Message: " + e.getErrorMessage());
         LOG.info("Msg ID: " + e.getMsgId());
      }
   }

   /**
    *       :    ,    ,   ,    ALERT    。
    * 
    * @return
    */
   private PushPayload buildPushObject_all_all_alert(String alert) {
      return PushPayload.alertAll(alert);//     
   }

   /**
    *       :  android_ios,         "usirID",      ALERT。      mklx——"    "
    * 
    * @return
    */
   private PushPayload buildPushObject_all_alias_alert(String userID, String alert, String mklx) {
      return PushPayload.newBuilder().setPlatform(Platform.android_ios())//   :android_ios
            .setAudience(Audience.alias(userID))//   ,              ,      UserID  
            .setNotification(Notification.newBuilder().setAlert(alert)
                  .addPlatformNotification(AndroidNotification.newBuilder()
                        // .setTitle(TITLE)//android   ,  app      
                        .addExtra("mklx", mklx).build())
                  .addPlatformNotification(IosNotification.newBuilder()
                        // .setBadge(5)//ios    ,     N      
                        .addExtra("mklx", mklx).build())
                  .build())
            .build();
   }

   /**
    *       :  android_ios,         "usirID",     json——"{key:1,key:2}"。
    * 
    * @return
    */
   private PushPayload buildPushObject_messageWithExtras(String userID, String json) {
      System.out.println("json====="+json);
      return PushPayload.newBuilder().setPlatform(Platform.android_ios())
            .setAudience(Audience.alias(userID))//   ,              ,      UserID  
            .setMessage(Message.newBuilder()
                  .setMsgContent(json)
                  .build())
            .build();
   }

   public class Params {
      //     ,       Key masterSecret
      private static final String appKey = "";
      private static final String masterSecret = "";
   }
}

3. 극광 푸 시 메 시 지 를 수신 하 는 방송 수신 기 첨부
/**
 *   :JPushReceiver.class
 *   :         
 * Created by:   on 2017/2/9.
 * --------------------------------------
 *     :
 *   :
 * Modify by:
 */
public class JPushReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        Bundle bundle = intent.getExtras();
        KL.d("[JPushReceiver] onReceive - " + intent.getAction() + ", extras: " + printBundle(bundle));
        if (JPushInterface.ACTION_REGISTRATION_ID.equals(intent.getAction())) {
            String regId = bundle.getString(JPushInterface.EXTRA_REGISTRATION_ID);
            KL.d("[JPushReceiver]   Registration Id : " + regId);
            //send the Registration Id to your server...
        } else if (JPushInterface.ACTION_MESSAGE_RECEIVED.equals(intent.getAction())) {
            KL.d("[JPushReceiver]              : " + bundle.getString(JPushInterface.EXTRA_MESSAGE));
        } else if (JPushInterface.ACTION_NOTIFICATION_RECEIVED.equals(intent.getAction())) {
            KL.d("[JPushReceiver]           ");
            int notifactionId = bundle.getInt(JPushInterface.EXTRA_NOTIFICATION_ID);
            KL.d("[JPushReceiver]            ID: " + notifactionId);
        } else if (JPushInterface.ACTION_NOTIFICATION_OPENED.equals(intent.getAction())) {
            KL.d("[JPushReceiver]          ");
        } else if (JPushInterface.ACTION_RICHPUSH_CALLBACK.equals(intent.getAction())) {
            KL.d("[JPushReceiver]      RICH PUSH CALLBACK: " + bundle.getString(JPushInterface.EXTRA_EXTRA));
            //      JPushInterface.EXTRA_EXTRA        ,      Activity,        ..
        } else if(JPushInterface.ACTION_CONNECTION_CHANGE.equals(intent.getAction())) {
            boolean connected = intent.getBooleanExtra(JPushInterface.EXTRA_CONNECTION_CHANGE, false);
            KL.d("[JPushReceiver]" + intent.getAction() +" connected state change to "+connected);
        } else {
            KL.d("[JPushReceiver] Unhandled intent - " + intent.getAction());
        }
    }

    //       intent extra   
    private String printBundle(Bundle bundle) {
        StringBuilder sb = new StringBuilder();
        for (String key : bundle.keySet()) {
            if (key.equals(JPushInterface.EXTRA_NOTIFICATION_ID)) {
                sb.append("
key:" + key + ", value:" + bundle.getInt(key)); }else if(key.equals(JPushInterface.EXTRA_CONNECTION_CHANGE)){ sb.append("
key:" + key + ", value:" + bundle.getBoolean(key)); } else if (key.equals(JPushInterface.EXTRA_EXTRA)) { if (bundle.getString(JPushInterface.EXTRA_EXTRA).isEmpty()) { KL.d("This message has no Extra data"); continue; } } else { sb.append("
key:" + key + ", value:" + bundle.getString(key)); } } return sb.toString(); } }

주: mainfests 등록:
    android:name=".util.JPushReceiver"
    android:enabled="true"
    android:exported="false">
    
        android:name="cn.jpush.android.intent.REGISTRATION" />
        
        android:name="cn.jpush.android.intent.MESSAGE_RECEIVED" />
        
        android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED" />
        
        android:name="cn.jpush.android.intent.NOTIFICATION_OPENED" />
        
        android:name="cn.jpush.android.intent.ACTION_RICHPUSH_CALLBACK" />
        
        android:name="cn.jpush.android.intent.CONNECTION" />
        
        android:name="com.house" />
    

좋은 웹페이지 즐겨찾기