智遊推送zypush試用

1.申請appkey

到www.zypush.com申請appkeyandroid

2.導入文件

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

3.配置AndroidManifest.xml文件

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

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
代碼塊<!-- 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" />

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

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
代碼塊
<!--自定義權限-->
     <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啓動推送服務
函數原型tcp

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

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

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

示例測試

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

4.2設置別名this

須要注意的是:這個接口是覆蓋邏輯,而不是增量邏輯。即新的調用會覆蓋以前的設置。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

5.接收消息PushReceiver

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
代碼塊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);
        }
    }}
相關文章
相關標籤/搜索