基于Android系统开发ionic调用友盟SDK的Cordova插件

文章目录

          • 一、集成友盟推送
            • 1. 准备工作
          • 二、集成开发
            • 1. 新建ionic项目
            • 2. 修改config.xml中的id和name,这边的id需要跟友盟上传的应用id一致 【很重要】
            • 3. 加入安卓或者ios平台
            • 4. 将插件集成进ionic 项目中
            • 5. 用Android Studio打开android平台代码,查看插件是否已经成功加入。
            • 6. 加入所需lib和so包、自定义Application
            • 7. 开发UMPushPlugin
            • 8. 配置权限
            • 9. 配置UM_APPKEY 、UM_MESSAGE_SECRET
            • 10. 配置所需service、provider

一、集成友盟推送
1. 准备工作
  • 注册友盟开发账号
  • 上传应用 获取AppKey和Umeng Message Secret
  • 下载友盟SDK
  • 新建cordova插件
  • 查看文档的开发流程
    参考:https://developer.umeng.com/docs/66632/detail/66744
二、集成开发
1. 新建ionic项目
2. 修改config.xml中的id和name,这边的id需要跟友盟上传的应用id一致 【很重要】

基于Android系统开发ionic调用友盟SDK的Cordova插件_第1张图片

3. 加入安卓或者ios平台
4. 将插件集成进ionic 项目中
5. 用Android Studio打开android平台代码,查看插件是否已经成功加入。
6. 加入所需lib和so包、自定义Application

注意开发文档中提到的:初始化方法由基础组件包提供,要使用PushSDK,必须在工程的自定义Application类的 onCreate() 方法中调用基础组件包提供的初始化函数
跟其他的推送不一样,友盟规定了app启动就必须注册友盟通知,就没有其他的第三方推送说的,启动app之后开启通知的说法。
根据要求新建UMApplication继承Application,在onCreate方法里完成友盟的注册功能,具体实现如下:

package com.ai.ced.umpush;

import android.app.Application;
import android.content.SharedPreferences;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.util.Log;

import com.umeng.commonsdk.UMConfigure;
import com.umeng.message.IUmengRegisterCallback;
import com.umeng.message.PushAgent;

/**
 * Created by yd on 2019/3/11.
 */

public class UMApplication extends Application {

    private static final String TAG = UMApplication.class.getSimpleName();

    private  SharedPreferences.Editor editor;

    @Override
    public void onCreate() {
        super.onCreate();
        // 将token 保存进token.xml文件中
        SharedPreferences tokenSP = getSharedPreferences("token", 0);
        editor = tokenSP.edit();

        String appKey = "";
        String message_secret = "";

       try {
           ApplicationInfo appInfo = this.getPackageManager()
                   .getApplicationInfo(this.getPackageName(),PackageManager.GET_META_DATA);
           appKey = appInfo.metaData.getString("UM_APPKEY");
           message_secret = appInfo.metaData.getString("UM_MESSAGE_SECRET");

       } catch (PackageManager.NameNotFoundException e) {
           e.printStackTrace();
       }


        // 在此处调用基础组件包提供的初始化函数 相应信息可在应用管理 -> 应用信息 中找到 http://message.umeng.com/list/apps
        // 参数一:当前上下文context;
        // 参数二:应用申请的Appkey(需替换);
        // 参数三:渠道名称;
        // 参数四:设备类型,必须参数,传参数为UMConfigure.DEVICE_TYPE_PHONE则表示手机;传参数为UMConfigure.DEVICE_TYPE_BOX则表示盒子;默认为手机;
        // 参数五:Push推送业务的secret 填充Umeng Message Secret对应信息(需替换)

        UMConfigure.init(this, appKey, "Umeng", UMConfigure.DEVICE_TYPE_PHONE, message_secret);

        PushAgent mPushAgent = PushAgent.getInstance(this);
        //注册推送服务,每次调用register方法都会回调该接口
        mPushAgent.register(new IUmengRegisterCallback() {

            @Override
            public void onSuccess(String deviceToken) {
                //注册成功会返回device token
                Log.v(TAG,"推送服务注册成功");
                Log.v(TAG,"my device token = " + deviceToken);
                // 保存token
                editor.putString("token",deviceToken);
                editor.commit();
            }

            @Override
            public void onFailure(String s, String s1) {
                Log.v(TAG,"推送服务注册失败");
                Log.v(TAG,"s=" + s);
                Log.v(TAG,"s1=" + s1);
            }
        });


    }


}

配置自定义的Application在这里插入图片描述所需lib和so基于Android系统开发ionic调用友盟SDK的Cordova插件_第2张图片

7. 开发UMPushPlugin
package com.ai.ced.umpush;

import android.app.Activity;
import android.util.Log;

import com.umeng.commonsdk.UMConfigure;
import com.umeng.message.IUmengCallback;
import com.umeng.message.PushAgent;

import org.apache.cordova.CordovaPlugin;
import org.apache.cordova.CallbackContext;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

/**
 * This class echoes a string called from JavaScript.
 */
public class UMPushPlugin extends CordovaPlugin {

    public static final String TAG = "UMPushPlugin";

    public static Activity activity;

    @Override
    public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
        Log.d(TAG,"execute");
        activity = this.cordova.getActivity();

        if (action.equals("stopUMPushSDK")){
            this.stopUMPushSDK("",callbackContext);
        }
        return false;
    }
    
    /**
     * 关闭通知
     * @param message
     * @param callbackContext
     */
    private void stopUMPushSDK(String message, CallbackContext callbackContext){
        // 获取推送实例
        PushAgent mPushAgent = PushAgent.getInstance(activity);
        // 关闭推送
        mPushAgent.disable(new IUmengCallback() {
            @Override
            public void onSuccess() {
                Log.d(TAG,"关闭推送成功");
            }

            @Override
            public void onFailure(String s, String s1) {
                Log.d(TAG,"关闭推送失败");
            }
        });

    }

}
8. 配置权限














9. 配置UM_APPKEY 、UM_MESSAGE_SECRET


10. 配置所需service、provider

    
        
    
    
        
    


    
        
    


    
        
    
    
        
    
    
        
        
    
    
        
    


    
        
    
    
        
    




    
        
    


    
        
    


    
        
    
    
        
        
    


    
        
    



    
        
    
    
        
    
    
        
    
    
        
    
    
        
    



    

你可能感兴趣的:(ionic)