Android接入华为推送详细步骤

由于极光推送的到达率不高,所以项目重要集成个推,进行华为推送和小米推送

前提:先说下Mainfest文件中需要的配置,可以参考相关文件

 

 

    
    
    
    
    
    
    
    
    
    
    
	
	
	

	
		





 




  

        


        
            
                
                
                
                
                
                
            
        





1、https://developer.huawei.com/consumer/cn/service/hms/pushservice.html 

登陆账号

2、开始接入华为推送

Android接入华为推送详细步骤_第1张图片

3、解压这个包,重点来了

Android接入华为推送详细步骤_第2张图片

4、接入华为推送需要使用HMSAgent这个类和几个包,需要用GetHMSAgent.bat获取

Android接入华为推送详细步骤_第3张图片

5、这个时候需要把生成的copysrc导入项目

Android接入华为推送详细步骤_第4张图片ka

6、看完这个路径,我有点懵,怎么顺利导入呢?

Android接入华为推送详细步骤_第5张图片

7、在项目的同级文件夹下,新建一个包就解决这个问题了

 

 

Android接入华为推送详细步骤_第6张图片

8、这样就解决了

 

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

以来远程库,在项目的build.gradle中添加华为推送依赖库   

maven {url 'http://developer.huawei.com/repo/'}

Android接入华为推送详细步骤_第7张图片

在app的build.gradle中添加以来的版本号

compile 'com.huawei.android.hms:push:2.6.1.301'

Android接入华为推送详细步骤_第8张图片

在application中开始初始化

Android接入华为推送详细步骤_第9张图片

 

在Activity中开始创建连接,activity需要继承两个接口  HuaweiApiClient.ConnectionCallbacks,HuaweiApiClient.OnConnectionFailedListener 

 

Android接入华为推送详细步骤_第10张图片

//华为push
private void initPush() {
    System.out.println("初始化华为API");
    client = new HuaweiApiClient.Builder(this)
            .addApi(HuaweiPush.PUSH_API)
            .addConnectionCallbacks(this)
            .addOnConnectionFailedListener(this)
            .build();
    client.connect(this);


}


//连接上时
@Override
public void onConnected() {
    getTokenAsyn();

}

private void getTokenAsyn() {
    if(!client.isConnected()) {
        Log.i("aaaa", "获取token失败,原因:HuaweiApiClient未连接");
        return;
    }
    PendingResult tokenResult = HuaweiPush.HuaweiPushApi.getToken(client);
    tokenResult.setResultCallback(new ResultCallback() {
        @Override
        public void onResult(TokenResult result) {
            //这边的结果只表明接口调用成功,是否能收到响应结果只在广播中接收,广播这块后面会有讲到
            String token = result.getTokenRes().getToken();
            System.out.println("main中的token"+token);

        }
    });

}

//断开
@Override
public void onConnectionSuspended(int cause) {

}


//失败
@Override
public void onConnectionFailed(ConnectionResult result) {
    System.out.println("华为连接失败");

}

 

需要自己注册一个receiver继承华为的

public class MyHuaWeiReceiver extends PushReceiver {
    @Override
    public void onPushMsg(Context context, byte[] msg, String token) {
        super.onPushMsg(context, msg, token);
    }

    @Override
    public void onToken(Context context, String token, Bundle extras) {
        super.onToken(context, token, extras);
        System.out.println("项目token"+token);
    }


    @Override
    public void onEvent(Context context, Event event, Bundle extras) {
        super.onEvent(context, event, extras);
    }


    @Override
    public void onPushState(Context context, boolean pushState) {
        super.onPushState(context, pushState);
    }
}

这样,进入华为后台就可以输入华为分配的token进行推送了

Android接入华为推送详细步骤_第11张图片

你可能感兴趣的:(Android开发,AndroidStudio)