1.問題
項(xiàng)目是純flutter的咙俩,集成友盟推送,一開始湿故,看到友盟有flutter推送的庫(kù)阿趁,以為安卓的推送會(huì)很簡(jiǎn)單,后面集成的時(shí)候坛猪,發(fā)現(xiàn)是我想多了脖阵,始終逃不掉寫原生的命運(yùn)。
不要用友盟flutter的庫(kù)J浴C!就斤!不要看flutter的集成文檔7紫场!U阶!
不要用友盟flutter的庫(kù)R郧;毖怼!忧设!不要看flutter的集成文檔5蟊辍!V吩巍膀懈!
不要用友盟flutter的庫(kù)!=骼F袈А!不要看flutter的集成文檔A跆铡8於摹!匙隔!
重要的事情說三遍疑苫,如果你非要去試試,那就去吧,他那個(gè)flutter文檔捍掺,不能說毫無(wú)用處撼短,只能說一無(wú)是處。我折騰了flutter的庫(kù)兩天挺勿,最后能拿到token曲横,但是卻收不到推送!B印Jだ啤!最終湃番,我還是屈服了夭织,采用安卓原生的集成方式,集成完后吠撮,發(fā)現(xiàn)原生的反倒還簡(jiǎn)單點(diǎn)W鸲琛!D嗬肌弄屡!
2.步驟
2.1 去友盟注冊(cè)賬號(hào),創(chuàng)建安卓項(xiàng)目鞋诗。
這一步應(yīng)該都會(huì)膀捷,略過。
2.2 拉取友盟的安卓推送庫(kù)削彬。
在flutter項(xiàng)目的android目錄中全庸,找到app的build.gradle,添加進(jìn)去融痛。注意路徑壶笼,我這邊是這樣的,大家可以參考下:
image.png
切記雁刷,是上圖1這個(gè)build.gradle覆劈,別搞錯(cuò)了。
在文件最后添加沛励。
dependencies {
api 'com.umeng.umsdk:common:9.5.1'
api 'com.umeng.umsdk:asms:1.6.3'
api 'com.umeng.umsdk:push:6.5.4'
}
具體用哪個(gè)版本责语,參考友盟的文檔。
2.3 在AndroidManifest.xml中侯勉,添加權(quán)限
image.png
添加權(quán)限:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
2.4 注冊(cè)友盟推送
最后在MainActivity.java中鹦筹,添加友盟的初始化和注冊(cè),然后拿到token址貌,去網(wǎng)頁(yè)上面測(cè)試即可铐拐。
MainActivity.java最終內(nèi)容如下:
package 你的包名;
import android.os.Bundle;
import com.umeng.message.PushAgent;
import io.flutter.embedding.android.FlutterActivity;
import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Context;
import com.umeng.commonsdk.UMConfigure;
import com.umeng.message.IUmengRegisterCallback;
import com.umeng.message.PushAgent;
public class MainActivity extends FlutterActivity {
protected MainActivity mContext;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mContext = this;
PushAgent.getInstance(mContext).onAppStart();
UMConfigure.init(this,
"你的AppKey",
"你的渠道號(hào)",
UMConfigure.DEVICE_TYPE_PHONE,
"你的Umeng Message Secret");
PushAgent mPushagent = PushAgent.getInstance(this);
mPushagent.register(new IUmengRegisterCallback() {
@Override
public void onSuccess(String deviceToken) {
// 這里拿到了device token徘键,我復(fù)制到了剪切板,然后找個(gè)地方粘貼就能拿到網(wǎng)頁(yè)上去測(cè)試了遍蟋,各位自行處理
try {
ClipboardManager cm = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
ClipData mClipData = ClipData.newPlainText("Label", deviceToken);
cm.setPrimaryClip(mClipData);
} catch (Exception e) {
}
}
@Override
public void onFailure(String s, String s1) {
try {
ClipboardManager cm = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
ClipData mClipData = ClipData.newPlainText("Label", "s:" + s + ",s1:" + s1);
cm.setPrimaryClip(mClipData);
} catch (Exception e) {
}
}
});
}
}
我把token復(fù)制到了剪切板吹害,然后拿到友盟官網(wǎng)去測(cè)試。
2.5 測(cè)試推送
這一步就需要去友盟官網(wǎng)測(cè)試了虚青,很簡(jiǎn)單它呀,自行去測(cè)試吧。