Flutter封裝阿里push

原文地址:cloud.tencent.com/developer/a…html

倉庫地址:dalipushandroid

由於阿里的推進對小米和華爲的離線推送兼容的比較好,所以,我使用flutter將阿里推送封裝了一下,效過圖,以下所示,這裏是戰士的將進程殺死以後,小米設備收到的推送效果。ios

小米里面推送示例

HOW TO USE

1、資源申請

一、首先,你須要到阿里雲上面去申請一個appid,申請地址:阿里雲 後端

二、注意,若是你須要小米,華爲離線推送的話,須要參考這裏 參考,注意,華爲的離線推送測試必定要等到審覈經過以後bash

2、Andriod方面

一、寫一個application繼承自FlutterApplication服務器

注意,這個是阿里推送的要求網絡

移動推送的初始化必須在Application中,不能放到Activity中執行。移動推送在初始化過程當中將啓動後臺進程channel,必須保證應用進程和channel進程都執行到推送初始化代碼。 若是設備成功註冊,將回調callback.onSuccess()方法。 但若是註冊服務器鏈接失敗,則調用callback.onFailed方法,而且自動進行從新註冊,直到onSuccess爲止。(重試規則會由網絡切換等時間自動觸發。) 請在網絡通暢的狀況下進行相關的初始化調試,若是網絡不通,或者App信息配置錯誤,在onFailed方法中,會有相應的錯誤碼返回,可參考錯誤處理。app

public class FApp extends io.flutter.app.FlutterApplication {

    private static final String TAG = "FApp";

    @Override
    public void onCreate() {
        super.onCreate();
        initCloudChannel(this);
        //////注意,下面是小米華爲的輔助通道,是一種黑科技,能夠在進程殺死的狀況下,收到推送消息,所謂的離線推送,
        /////若是須要,注意讀一下下面一節,服務端代碼那塊,若是不須要,直接註釋2行,能夠知足app在線收到通知
          // 註冊方法會自動判斷是否支持小米系統推送,如不支持會跳過註冊。
        MiPushRegister.register(this, "2882303761517882020", "5671788227020");
        // 註冊方法會自動判斷是否支持華爲系統推送,如不支持會跳過註冊。
        HuaWeiRegister.register(this);
        //GCM/FCM輔助通道註冊,這個地方打開的狀況我沒測試,不過,GCM你懂的。
        //        GcmRegister.register(this, sendId, applicationId); //sendId/applicationId爲步驟得到的參數
    }

    /**
     * 初始化雲推送通道
     *
     * @param applicationContext
     */
    private void initCloudChannel(Context applicationContext) {
        PushServiceFactory.init(applicationContext);
        CloudPushService pushService = PushServiceFactory.getCloudPushService();
        pushService.register(applicationContext, new CommonCallback() {
            @Override
            public void onSuccess(String response) {
                Log.d(TAG, "init cloudchannel success");
            }

            @Override
            public void onFailed(String errorCode, String errorMessage) {
                Log.d(TAG, "init cloudchannel failed -- errorcode:" + errorCode + " -- errorMessage:" + errorMessage);
            }
        });
    }
}複製代碼

二、 服務端代碼,離線推送是須要後端配合的,後臺按照阿里推送的文檔部署好了以後,你能夠作成管理端,並封裝這樣的一個接口,來推送消息。ide

//服務端配置以下:

PushRequest pushRequest = new PushRequest();
// 其他設置省略
// ...
// 0:表示消息(默認爲0), 1:表示通知
pushRequest.setType(1);
// 標題
pushRequest.setTitle("hello");
// 內容
pushRequest.setBody("PushRequest body");
// 點擊通知後動做 "APPLICATION" : 打開應用 "ACTIVITY" : 打開AndroidActivity "URL" : 打開URL "NONE" : 無跳轉
pushRequest.setAndroidOpenType("APPLICATION");
// 設置輔助彈窗打開Activity,注意,這裏我配置爲了,com.brzhang.dalipush.PopupPushActivity
pushRequest.setAndroidPopupActivity("com.brzhang.dalipush.PopupPushActivity");
// 設置輔助彈窗通知標題
pushRequest.setAndroidPopupTitle("hello2");
// 設置輔助彈窗通知內容
pushRequest.setAndroidPopupBody("PushRequest body2");
// 設定android類型設備通知的擴展屬性
pushRequest.setAndroidExtParameters("{\"k1\":\"android\",\"k2\":\"v2\"}");複製代碼
請大家的後端開發注意,這裏的setAndroidPopupActivity可默認配置爲"com.brzhang.dalipush.PopupPushActivity",個人插件中集成了這個activity,固然,你徹底能夠替換爲本身的activity,只須要在Android目錄下去
三、修改build.gradle文件
defaultConfig {
        // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
        applicationId "com.brzhang.sophixtest"
        minSdkVersion 16
        targetSdkVersion 27
        versionCode flutterVersionCode.toInteger()
        versionName flutterVersionName
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        manifestPlaceholders = [
                ALIPUSH_PKGNAME  : applicationId,
                ALIPUSH_APPKEY   : "24xxxx5693", //ALIPush上註冊的包名對應的appkey.
                ALIPUSH_APPSECRET: "dd973xxxxxxxxxxxf575aee1ab1", //appsecret.
        ]
        //todo
//        ndk {
//            //選擇要添加的對應cpu類型的.so庫。
//            abiFilters 'armeabi', 'x86', 'armeabi-v7a', 'armeabi-v8a'
//        }
    }複製代碼

主要是兩個地方注意: 一個是applicationId,這裏要填你在阿里上申請的appid相關的那個包名 二個是manifestPlaceholders,這裏也注意填寫你本身的阿里雲key,secret。測試

四、請注意,不要使用個人appid到你的項目中,你用了也沒辦法推送,由於,要等登錄個人帳號去發推送消息啊。

3、IOS方面。

ios使用起來就沒有那麼複雜了,惟一的是:ios須要去配置APNS推送證書,能夠參考阿里推送ios配置文檔,到蘋果開發者中心申請的步驟也是繁瑣的一逼,不過,搞過一次以後,你就會發現很是簡單,最後導出的p12文件交給阿里push就好。

而後,你的ios工程中的配置,能夠參考本項目example目錄下的配置,

一、appDelegate.m文件

二、AliyunEmasServices-info.plist的導入

三、pod文件編寫

大概經歷這些步驟,cmd+r

就ok了。

相關文章
相關標籤/搜索