Android友盟推送

简介: Android友盟推送

当前版本号:v3.0.5


1.下载SDK解压并导入(import module,compile project(':PushSDK')),里面有demo,用demo的包名去官网添加一个应用,然后替换demo中的manifest文件里面的appkey和message_secret,就可以直接运行。


2.初始化SDK

public class App extends Application {
    public PushAgent mPushAgent;
    @Override
    public void onCreate() {
        super.onCreate();
        mPushAgent = PushAgent.getInstance(this);
        //注册推送服务,每次调用register方法都会回调该接口
        mPushAgent.register(new IUmengRegisterCallback() {
            @Override
            public void onSuccess(String deviceToken) {
                //注册成功会返回device token
                Log.e("deviceToken-------",deviceToken);
            }
            @Override
            public void onFailure(String s, String s1) {
            }
        });
        mPushAgent.setPushIntentServiceClass(UmengPushIntentService.class);
    }
}

这样就已经可以测试了。


3.打开指定页面


包名加activity名,com.umeng.demo.SecondActivity


4.自定义参数


自定义一个service去继承UmengMessageService

public class UmengPushIntentService extends UmengMessageService {
   @Override
    public void onMessage(Context context, Intent intent) {
        Intent data = new Intent(intent);
        data.setClass(context, TestActivity.class);
        //需为Intent添加Flag:Intent.FLAG_ACTIVITY_NEW_TASK,否则无法启动Activity。
        data.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(data);
    }
}

在跳转的activity中去接收数据并解析


public class TestActivity extends AppCompatActivity {
    public static final String TAG = "TestActivity";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_test);
        final String message = getIntent().getStringExtra(MESSAGE_BODY);
        if (TextUtils.isEmpty(message))
            return;
        final UMessage msg;
        try {
            msg = new UMessage(new JSONObject(message));
            UTrack.getInstance(this).trackMsgClick(msg);
            Map<String, String> extra = msg.extra;
            Log.d(TAG, "message=" + message);    //消息体
            Log.d(TAG, "custom=" + msg.custom);    //自定义消息的内容
            Log.d(TAG, "title=" + msg.title);    //通知标题
            Log.d(TAG, "text=" + msg.text);    //通知内容
            AlertDialog dialog;
            if (null != extra && extra.containsKey("msgType"))
                dialog = new AlertDialog.Builder(this)
                        .setTitle("if消息提示")
                        .setMessage(msg.text+"11111")
                        .setCancelable(false)
                        .setPositiveButton("确认", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                            }
                        })
                        .create();
            else
                dialog = new AlertDialog.Builder(this)
                        .setTitle("else消息提示")
                        .setMessage(msg.text)
                        .setCancelable(false)
                        .setPositiveButton("确认", null)
                        .create();
            dialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
                @Override
                public void onDismiss(DialogInterface dialog) {
                    onBackPressed();
                }
            });
            dialog.show();
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }
}

自定义的service需要在application类中调用


mPushAgent.setPushIntentServiceClass(UmengPushIntentService.class);

同时需要在manifest在注册


<service android:name=".UmengPushIntentService"
            android:process=":push"/>

相关实践学习
在云上部署ChatGLM2-6B大模型(GPU版)
ChatGLM2-6B是由智谱AI及清华KEG实验室于2023年6月发布的中英双语对话开源大模型。通过本实验,可以学习如何配置AIGC开发环境,如何部署ChatGLM2-6B大模型。
目录
相关文章
|
Java Android开发
Android 进行友盟多渠道打包步骤详解
Android 进行友盟多渠道打包步骤详解
372 0
|
数据采集 前端开发 Java
Android 友盟简单快速集成
Android 友盟简单快速集成
Android 友盟简单快速集成
|
缓存 编解码 监控
Android 移动应用性能优化 之 友盟
Android 移动应用性能优化 之 友盟
249 0
Android 移动应用性能优化 之 友盟
|
监控 小程序 机器人
|
监控 小程序 机器人
Android友盟U-APM快速集成与极致体验
使用友盟U-APM快速集成与极致体验
Android友盟U-APM快速集成与极致体验
|
Java API 开发工具
借助友盟+U-APM实现安卓应用优化:使用反射测试安卓设备是否使用“动态壁纸”
⾸先,这可能是⼀个⾮常罕⻅的优化,但我们仍然花费了⼤量的时间和精⼒弄清楚这个优化的细节,所以我认为分享这个⼩优化是有意义的。期待有⼀天, 某个地⽅的某个⼈可能会碰到相同的问题,并从这篇⽂章中受益。
借助友盟+U-APM实现安卓应用优化:使用反射测试安卓设备是否使用“动态壁纸”
|
存储 JSON Java
使用友盟+的APM服务实现基于Xamarin.Android的应用程序启动性能优化
随着开发平台的普及, 我们需要正确的⼯具和⽅法来满⾜不断增⻓的需求。Xamarin就是这样⼀种框架, 它⽀持在 Android、 iOS 和 Windows 平台上共享单个代码库。所以,我们将在 Xamarin.Android应⽤程序中测试性能, 就像在 AndroidStudio 中使⽤ Java 开发⼀样, 我们可以使⽤c#对性能进⾏测试, 从⽽优化启动时间。
使用友盟+的APM服务实现基于Xamarin.Android的应用程序启动性能优化
|
XML Java 数据库
使用友盟+的APM服务实现基于APK加速启动时间的Android系统资源优化
为了尽可能减⼩应⽤的⼤⼩,我们应该在发布版本中移除不使⽤的代码和资源。 另外还存在两个优化⽅向可以⽤来缩减应⽤程序的占⽤空间,⼀项是使⽤混淆处理功能,该功能会缩短应⽤的类 和成员的名称;另⼀项是使⽤优化功能,该功能会采⽤更积极的策略来进⼀步减⼩应⽤的⼤⼩。本⽂将介绍如何通过APK的资源优化来减轻应⽤程序的占⽤空间从⽽节省⽤户资源。
使用友盟+的APM服务实现基于APK加速启动时间的Android系统资源优化
|
监控 API Android开发
应用性能监控:使用Android Profiler和友盟+U-APM解决Android卡顿问题
作为⼀款倒计时⽇历 APP, 我们需要对每个⽇期实时显示倒计时并精确到秒。但是我们的 app 在滑动刷新数据时,会出现卡顿。卡顿在很⼤程度上取决于设备的 CPU 和其他消耗 CPU 时间的进程。于是我们尝试使⽤了友盟 + U-APM 内存分析对 APP 进⾏分析。
应用性能监控:使用Android Profiler和友盟+U-APM解决Android卡顿问题