智遊推送試用

最近要作推送的功能,因而去了解了下社區推薦的智遊推送zypush
開發指南很是詳細,按照這個配置,就能夠出來了。android

1.申請appkey

到www.zypush.com申請appkey數組

2.導入文件

將zhiyou_push.**.jar,liblptcpjin.so庫以及push_notification.xml,push_download.xml文件導入到工程內部網絡

3.配置AndroidManifest.xml文件

<注意:在配置過程當中有些地方須要用到包名以及appkey>app

 

<!-- push service(必要) -->
<service 
   android:name=」com.joboevan.push.service.PushService」>
</service>

<!--應用包名.PushReceiver 定義推送消息接收器,PushReceiver在SDK中有這個類-->
    <!-- <receiver android:name="YOUR_PACKAGENAME.PushReceiver" > -->
<!--com.zypush.activity 這是我本身的包名-->
    <receiver android:name=」com.zypush.activity.PushRecevier」>
      <intent-filter>
       <!-- <action android:name=」com.zypush.android.intent.message.申請的appkey」/> -->
       <!--用戶接收消息的action-->
       <action android:name=」com.zypush.android.intent.message.f262516bedf4c0f567b5659840920f94」/>
       <!--用戶打開通知欄的action-->
       <action android:name=」com.zypush.android.intent.NOTIFICATION_OPENED.f262516bedf4c0f567b5659840920f94」/>
       <!-- 須要上傳經緯度的action -->
       <action android:name=」com.zypush.android.intent.LBS_PUSH.f262516bedf4c0f567b5659840920f94」/>
      </intent-filter>
</receiver>

<!--- 心跳廣播接收器註冊(必要) -->
<receiver
      android:name="com.joboevan.push.receiver.CheckConnectRecevier"
      android:enabled="true" />

<!-- 網絡改變廣播監聽 (必要)-->
        <receiver android:name="com.joboevan.push.receiver.NetworkReceiver" >
            <intent-filter >
                <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
            </intent-filter>
        </receiver>

<!--  android:authorities="packagename"此處填寫包名 (必要)-->
        <provider
            android:authorities="com.zypush.activity"
            android:name="com.joboevan.push.providers.downloads.DownloadProvider" />

<!-- 富媒體下載服務 (必要)-->
        <service android:name="com.joboevan.push.providers.downloads.DownloadService" />

<!-- 富媒體下載接收器 (必要)-->
        <receiver
            android:exported="false"
            android:name="com.joboevan.push.providers.downloads.DownloadReceiver" >
            <intent-filter >
                <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
            </intent-filter>
        </receiver>


<!-- 配置的第三方參數屬性   測試帳號:zypush  密碼:123456 -->
        <!-- http://www.zypush.com -->
        <meta-data
            android:name="ZYPUSH_APPKEY"
            android:value="f262516bedf4c0f567b5659840920f94" />

推送服務運行所須要的權限tcp

代碼塊
<!--自定義權限-->
     <permission android:name="com.zypush.permission.ACCESS_DOWNLOAD_MANAGER" />
<!-- 網絡權限 -->
    <uses-permission android:name="android.permission.INTERNET" />
    <!-- 網絡狀態權限 -->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
     <!-- 往sdcard中寫入數據的權限 -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <!-- 獲取手機設備號權限 -->
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <!-- 手機震動權限 -->
    <uses-permission android:name="android.permission.VIBRATE" />
    <!-- 引用富媒體自定義權限 -->
    <uses-permission android:name="com.zypush.permission.ACCESS_DOWNLOAD_MANAGER" />
    <!-- 喚醒權限 -->
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <!-- 獲取當前任務權限 -->
    <uses-permission android:name="android.permission.GET_TASKS" />
    <!-- 懸浮窗體權限-->
    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />


<!-- 保留權限,後續添加功能須要用到 -->
    <!-- network網絡開關權限(可選權限) -->
    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
    <!-- 獲取基站須要的權限 (可選權限)-->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>

4.智遊推送API接口說明

4.1啓動推送服務
函數原型ide

1
2
代碼塊
PushManager.getInstance().connect(Context context,boolean isReconnect)

參數
context: Context對象
isReconnect: 設置是否自動重連,true:表示斷線之後自動重連,false標示斷線之後不會自動重連函數

返回值
true:開啓推送的條件都知足
false:條件不知足開啓推送測試

示例this

1
2
代碼塊
boolean result = PushManager.getInstance().connect(getApplicationContext(),true);

4.2設置別名google

須要注意的是:這個接口是覆蓋邏輯,而不是增量邏輯。即新的調用會覆蓋以前的設置。

一個用戶只能夠設置一個別名,至關於一我的的名字,爲了確保其惟一性,通常是用用戶名設置別名,推送能夠根據別名進行推送到我的客戶端。設置別名超時時間爲15秒,別名的最大長度不得超過40個字節,能夠在PushReceiver中接收設置別名返回給客戶端的返回值

1
2
代碼塊
PushManager.getInstance().bindAlias(Context context, String alias)

參數
context: Context對象

alias:設置的別名

返回值

示例

1
2
代碼塊
PushManager.getInstance().bindAlias(this, 「別名」);

4.3設置標籤

須要注意的是:這個接口是覆蓋邏輯,而不是增量邏輯。即新的調用會覆蓋以前的設置。

標籤的功能能夠將一個總體劃分紅不一樣的羣體,好比說將全部的用戶劃分紅「男」用戶和「女」用戶,那麼就能夠給用戶設置標籤「男」或「女」。一個用戶能夠設置多個標籤,多個標籤的關係是或的關係。設置標籤超時時間爲15秒,單個標籤的最大長度不得超過40個字節,而且不能爲空,一個客戶端最多能夠設置100個標籤。

函數原型

1
2
代碼塊
PushManager.getInstance().setTags(Context context , List<String> tags)

參數
context: Context對象

tags: 設置標籤的List數組

返回值

示例

1
2
代碼塊
PushManager.getInstance().setTags(this,tags);

4.4設置通知欄圖標

設置頂層通知欄圖標

函數原型

1
2
代碼塊
PushManager.getInstance().setNotificationIcon(Context context ,int value);

參數

context: Context對象

value: 通知欄圖標的資源id

返回值

示例

1
2
代碼塊
PushManager.getInstance().setNotificationIcon(this , R.drawable.icon);

4.5設置是否開啓智能提醒

是否開啓智能提醒。

函數原型

1
2
代碼塊
PushManager.getInstance(). isOpenRemind(Context context , boolean state , String content , int days , int startTime , int endTime) ;

參數
context: Context對象

state : 設置是否開啓智能提醒,true:表示開啓智能提醒,false表示暫停智能提醒

content:設置提醒內容

days:相隔幾天以後沒有打開應用,進行提醒

startTime:在startTime以後進行提醒0-23

endTime:在endTime以前進行提醒0-23

返回值

true:開啓智能提醒成功
false:開啓智能提醒失敗

示例

1
2
代碼塊
boolean result = PushManager.getInstance().isOpenRemind(this, true, "這是一個智能提醒", 3, 0, 23) ;

想要看更多的API說明,能夠到www.zypush.com

 

代碼塊
package com.zypush.activity;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;

import com.joboevan.push.bean.SendBroastBean;
import com.joboevan.push.tool.Consts;
import com.joboevan.push.tool.LBS;
import com.joboevan.push.tool.Tool;

/**
 * 推送消息接收器
 * 
 * **/
public class PushReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        // TODO Auto-generated method stub
        String action = intent.getAction();
        if (Consts.getACTION_RECEIVER_KEY(context).equals(action)) {
            Bundle bundle = intent.getExtras();
            String key = bundle.getString("key");

            if (Consts.MESSAGE_KEY_CONNECT.equals(key)) {
                // 鏈接結果
                int value = bundle.getInt("value");

                switch (value) {
                case Consts.RESULT_Y:
                    Log.d("Log", "鏈接成功");
                    break;
                case Consts.RESULT_N:
                    Log.d("Log", "鏈接失敗");
                    break;
                }
            } else if (Consts.MESSAGE_KEY_LOGIN.equals(key)) {
                // 登錄結果
                int value = bundle.getInt("value");

                switch (value) {
                case Consts.RESULT_Y:
                    Log.d("Log", "登錄成功");
                    break;
                case Consts.RESULT_N:
                    Log.d("Log", "登錄失敗");
                    break;
                }
            } else if (Consts.MESSAGE_KEY_SETALIAS.equals(key)) {
                int value = bundle.getInt("value");

                switch (value) {
                case Consts.RESULT_Y:
                    Log.d("Log", "別名設置成功");
                    break;
                case Consts.RESULT_N:
                    Log.d("Log", "別名設置失敗");
                    break;
                case Consts.RESULT_I:
                    Log.d("Log", "正在設置別名");
                    break;
                default:
                    break;
                }
            } else if (Consts.MESSAGE_KEY_CLEANALIAS.equals(key)) {
                int value = bundle.getInt("value");

                switch (value) {
                case Consts.RESULT_Y:
                    Log.d("Log", "清除別名成功");
                    break;
                case Consts.RESULT_N:
                    Log.d("Log", "清除別名失敗");
                    break;
                case Consts.RESULT_I:
                    Log.d("Log", "正在清除別名");
                    break;
                default:
                    break;
                }
            } else if (Consts.MESSAGE_KEY_SETTAGS.equals(key)) {
                int value = bundle.getInt("value");

                switch (value) {
                case Consts.RESULT_Y:
                    Log.d("Log", "標籤設置成功");
                    break;
                case Consts.RESULT_N:
                    Log.d("Log", "標籤設置失敗");
                    break;
                case Consts.RESULT_I:
                    Log.d("Log", "正在設置標籤");
                    break;
                default:
                    break;
                }
            } else if (Consts.MESSAGE_KEY_CLEANTAGS.equals(key)) {
                int value = bundle.getInt("value");

                switch (value) {
                case Consts.RESULT_Y:
                    Log.d("Log", "標籤清除成功");
                    break;
                case Consts.RESULT_N:
                    Log.d("Log", "標籤清除失敗");
                    break;
                case Consts.RESULT_I:
                    Log.d("Log", "正在清除標籤");
                    break;
                default:
                    break;
                }
            } else if (Consts.MESSAGE_KEY_CUSTOM.equals(key)) {
                // 接收自定義推送信息
                String value = bundle.getString("value");
                String flag = bundle.getString(Consts.MESSAGE_BACK_FLAG);
                Log.w("Log", "推送自定義消息: " + value);
                Log.w("Log", "推送自定義消息id: " + flag);

                //這個方法是推送內部封裝生成通知的方法
                CustomNotification notification = new CustomNotification();
                notification.createNotification(context);
            } else if (Consts.MESSAGE_KEY_NOTIFICATION.equals(key)) { // 如需在工程中展現通知標題和內容,請設置是否展現通知內容
                String title = bundle.getString(Consts.NOTIFICATION_TITLE);
                String content = bundle.getString(Consts.NOTIFICATION_CONTENT);
                String ext = bundle.getString(Consts.NOTIFICATION_EXT);
                String flag = bundle.getString(Consts.MESSAGE_BACK_FLAG);
                Log.d("Log", "通知標題:" + title);
                Log.d("Log", "通知內容:" + content);
                Log.d("Log", "通知附加字段:" + ext);
                Log.d("Log", "通知消息id:" + flag);
            } else if (Consts.MESSAGE_KEY_PUSHSTATECHANGED.equals(key)) { // 客戶端與服務端的狀態
                int value = bundle.getInt("value");

                switch (value) {
                case Consts.PUSH_CONNECTSTATE_CONNECTING: // 通道鏈接
                    Log.d("Log", "推送服務已經鏈接");
                    break;

                case Consts.PUSH_CONNECTSTATE_DISCONNECT: // 通道斷開
                    Log.e("Log", "推送服務已經斷開");
                    break;
                }
            } else if (Consts.ACTION_RECEIVER_VERSION.equals(key)) {
                int value = bundle.getInt("value");

                switch (value) {
                case Consts.VERSION_LATEST:
                    Log.d("Log","推送版本是最新版本:可用");
                    break;
                case Consts.VERSION_OLD_PERMIT:
                    Log.d("Log","推送版本是老版本:可用");
                    break;
                case Consts.VERSION_OLD_REFUSE:
                    Log.e("Log","推送版本是老版本:不可用");
                    break;
                default:
                    break;
                }
            } else if (Consts.CLIENT_DEVICE_ID.equals(key)) {
                String device_id = bundle.getString("value");
                Log.d("Log", "設備惟一標識:" + device_id);
            }
        } else if (Consts.getActionNotificationOpened(context).equals(action)) {
            Log.d("Log", "用戶點擊了通知");
            Bundle bundle = intent.getExtras() ;
            //通知標題
            String title = bundle.getString(Consts.NOTIFICATION_TITLE);
            //通知內容
            String content = bundle.getString(Consts.NOTIFICATION_CONTENT);
            //通知附加字段
            String ext = bundle.getString(Consts.NOTIFICATION_EXT);
            //通知消息flag
            String flag = bundle.getString(Consts.MESSAGE_BACK_FLAG);

            Intent i = new Intent(context, TestActivity.class);
            i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(i);
        } else if (Consts.getActionLbsPush(context).equals(action)) { // 接收到廣播,須要上傳經緯度
            Log.d("Log", "須要上傳經緯度信息");
            // 請調用上傳經緯度的接口,此處是寫的固定的百度經緯度
            // 參數分別爲context對象,經度,緯度,類型(須要經過枚舉類獲取,分爲GPS,百度,google三種經緯度類型)
            String method = LBS.BAIDU.method(); // 獲取經緯度類型
            PushMethodImpl.getInstance().UploadGpsMessage(context,"0", "0", method);
        }
    }

}
相關文章
相關標籤/搜索