Android集成极光推送和踩过的坑(一)

转载请标明出处

http://blog.csdn.net/mohan6/article/details/72960346

本文作者:【默寒的博客】


集成步骤以及集成过程遇到的坑:

这部分主要阐述了集成极光推送的sdk的步骤,以及我在集成过程中遇到的一些问题。集成步骤只是摘出了极光SDK中必须的骨子的部分,可以满足一般项目Push需求,这里只做了通知消息,自定义的穿透消息请详见极光的SDK集成文档。我主要是总结一下,集成过程中需要注意和可能出问题的地方(详见的说明),如果你也遇到了类似的问题,希望可以通过这篇文章能迅速把坑填了。LZ表示,这些坑好心塞~委屈

一.jcenter 自动集成步骤

1.确认android studio的 Project 根目录的主 gradle 中配置了jcenter支持。(新建project默认配置就支持,一般不需要配置,只要确认一下就好)

buildscript {
    repositories {
        jcenter()
    }
    ......
}

allprojects {
    repositories {
        jcenter()
    }
}

2.在 module 的 gradle 中添加依赖和AndroidManifest的替换变量。

android {
    ......
    defaultConfig {
        applicationId "com.xxx.xxx" //JPush上注册的包名.
        ......

        ndk {
            //选择要添加的对应cpu类型的.so库。 
            abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a'

            // 还可以添加 'x86', 'x86_64', 'mips', 'mips64'
        }

        manifestPlaceholders = [
            JPUSH_PKGNAME : applicationId,
            JPUSH_APPKEY : "你的appkey", //JPush上注册的包名对应的appkey.
            JPUSH_CHANNEL : "自定义渠道名称", //用户渠道统计的渠道名称
        ]
        ......
    }
    ......
}

dependencies {
    ......

    compile 'cn.jiguang.sdk:jpush:3.0.5'  
    compile 'cn.jiguang.sdk:jcore:1.1.2'  
    ......
}

: 1. 如果在添加以上 abiFilter 配置之后android Studio出现以下提示:

  NDK integration is deprecated in the current plugin. Consider trying the new experimental plugin

则在 Project 根目录的gradle.properties文件中添加:

 android.useDeprecatedNdk=true

二. AndroidManifest加权限

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.******">

    <uses-permission android:name="android.permission.INTERNET"/>
    <!-- 访问当前网络状态权限 -->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <!-- 获取手机信息 -->
    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
    <uses-permission android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION"/>
    <!--2017.5.27 极光推送权限 ym start-->
    <uses-permission android:name="android.permission.WAKE_LOCK"/>
    <uses-permission android:name="android.permission.VIBRATE"/>
    <uses-permission android:name="android.permission.RECEIVE_USER_PRESENT"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.WRITE_SETTINGS"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>

    <permission
        android:name="com.******(包名).permission.JPUSH_MESSAGE"
        android:protectionLevel="signature"/>
    <uses-permission android:name="com.******(包名).permission.JPUSH_MESSAGE"/>
<!--2017.5.27 极光推送权限 ym end-->

:  

1.记得修改极光自定义权限的包名。

2.【访问当前网络状态权限】和【获取手机信息】项目里一般已经添加,这里检查一下,缺的补上。【极光推送权限】是极光要求,但是项目里可能没有的,注意查看。

<permission
        android:name="com.******(包名).permission.JPUSH_MESSAGE"
        android:protectionLevel="signature"/>
    <uses-permission android:name="com.carspass.permission.JPUSH_MESSAGE"/>

三. 集成 JPush Android SDK 的混淆,否则打包后极光不好使

  • 请下载4.x及以上版本的proguard.jar, 并替换你Android Sdk "tools\proguard\lib\proguard.jar"

  • 请在工程的混淆文件中添加以下配置:

  • -dontoptimize
    -dontpreverify
    
    -dontwarn cn.jpush.**
    -keep class cn.jpush.** { *; }
    
    -dontwarn cn.jiguang.**
    -keep class cn.jiguang.** { *; }

:    别忘了往混淆文件里加这段代码。我第一次集成的时候给忘却了,后来大神找我说minifyEnabled true(minifyEnabled主要用来控制是否运行混淆的。true表示混淆), 极光打包以后不好使,提醒我忘记在混淆文件中加这段代码了。

dontwarn表示打包混淆的时候,消除极光的警告。

keep表示保持极光的一些类,不被混淆。

四. JPushManger极光推送管理类

/**
 * Created by ym on 2017/5/27.
 * 极光推送管理类
 */

public class JPushManager {
  private String TAG = "JPushManager";
  private final String KEY = 
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值