flutter项目集成友盟推送安卓端的心得

1.问题

项目是纯flutter的,集成友盟推送,一开始,看到友盟有flutter推送的库,以为安卓的推送会很简单,后面集成的时候,发现是我想多了,始终逃不掉写原生的命运。

不要用友盟flutter的库!!!!不要看flutter的集成文档!!!!

不要用友盟flutter的库!!!!不要看flutter的集成文档!!!!

不要用友盟flutter的库!!!!不要看flutter的集成文档!!!!

重要的事情说三遍,如果你非要去试试,那就去吧,他那个flutter文档,不能说毫无用处,只能说一无是处。我折腾了flutter的库两天,最后能拿到token,但是却收不到推送!!!!最终,我还是屈服了,采用安卓原生的集成方式,集成完后,发现原生的反倒还简单点!!!!

2.步骤

2.1 去友盟注册账号,创建安卓项目。

这一步应该都会,略过。

2.2 拉取友盟的安卓推送库。

在flutter项目的android目录中,找到app的build.gradle,添加进去。注意路径,我这边是这样的,大家可以参考下:


image.png

切记,是上图1这个build.gradle,别搞错了。
在文件最后添加。

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'
}

具体用哪个版本,参考友盟的文档。

2.3 在AndroidManifest.xml中,添加权限

image.png

添加权限:

    
    
    
    

2.4 注册友盟推送

最后在MainActivity.java中,添加友盟的初始化和注册,然后拿到token,去网页上面测试即可。
MainActivity.java最终内容如下:

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",
                "你的渠道号",
                UMConfigure.DEVICE_TYPE_PHONE,
                "你的Umeng Message Secret");
        PushAgent mPushagent = PushAgent.getInstance(this);
        mPushagent.register(new IUmengRegisterCallback() {
            @Override
            public void onSuccess(String deviceToken) {
                // 这里拿到了device token,我复制到了剪切板,然后找个地方粘贴就能拿到网页上去测试了,各位自行处理
                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复制到了剪切板,然后拿到友盟官网去测试。

2.5 测试推送

这一步就需要去友盟官网测试了,很简单,自行去测试吧。

你可能感兴趣的:(flutter项目集成友盟推送安卓端的心得)