zoukankan      html  css  js  c++  java
  • 极光推送android sdk集成步骤

    推送,用极光,大家都说好,哈哈.

    进入正题:

    1.确认android studio的 Project 根目录的主 gradle 中配置了jcenter支持。(基本上现在都已经支持了,循例说一下)位置  ,就是这个

    2.在 module 的 gradle 中添加依赖和AndroidManifest的替换变量(建议先插入依赖包,再插入另外的ndk和manifestPlaceholders )

    android {
        ......
        defaultConfig {
            applicationId "com.xxx.xxx" //JPush上注册的包名.
            ......
    
            ndk {
                //选择要添加的对应cpu类型的.so库。 
                abiFilters 'armeabi', 'armeabi-v7a', 'armeabi-v8a' 
                // 还可以添加 'x86', 'x86_64', 'mips', 'mips64'
            }
    
            manifestPlaceholders = [
                JPUSH_PKGNAME : applicationId,
                JPUSH_APPKEY : "你的appkey", //JPush上注册的包名对应的appkey.
                JPUSH_CHANNEL : "developer-default", //暂时填写默认值即可.
            ]
            ......
        }
        ......
    }
    
    dependencies {
        ......
    
        compile 'cn.jiguang.sdk:jpush:3.0.0'  // 此处以JPush 3.0.0 版本为例。
        compile 'cn.jiguang.sdk:jcore:1.0.0'  // 此处以JCore 1.0.0 版本为例。
        ......
    }

    3.基本不会出现,这个是ndk(调用c或者c++语言的方法的转换器)版本太旧就导致的

    注 : 如果在添加以上 abiFilter 配置之后android Studio出现以下提示:
        NDK integration is deprecated in the current plugin. Consider trying the new experimental plugin.
    则在 Project 根目录的gradle.properties文件中添加:
        android.useDeprecatedNdk=true

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

    看清楚文件位置和需要添加的东西

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

    5.最重要的来了,如果app已经有了application类(启动应用执行的第一个类,在里面做很多前期准备的),就在里面写入极光推送的初始化代码,如果没有的就自己写一个类继承Application(下面以自己写的为例子)

    package com.example.lym.jiguangtest;
    
    import android.app.Application;
    
    import cn.jpush.android.api.JPushInterface;
    
    /**
     * Created by lym on 2016/12/22.
     */
    
    public class TryJiGuang extends Application {
        @Override
        public void onCreate() {
            super.onCreate();
            JPushInterface.setDebugMode(true);
            JPushInterface.init(this);
        }
    }

    然后要在manifest文件里面对该类进行声明,到这里准备工作基本完成,可以开始测试了

    6.运行app之后,看studio的log日志

    测试确认
    
    确认所需的权限都已经添加。如果必须的权限未添加,日志会提示错误。
    确认 AppKey(在Portal上生成的)已经正确的写入 Androidmanifest.xml 。
    确认在程序启动时候调用了init(context) 接口
    确认测试手机(或者模拟器)已成功连入网络 + 客户端调用 init 后不久,如果一切正常,应有登录成功的日志信息
    启动应用程序,在 Portal 上向应用程序发送自定义消息或者通知栏提示。详情请参考管理Portal。
    在几秒内,客户端应可收到下发的通知或者正定义消息,如果 SDK 工作正常,则日志信息会如下:
    [JPushInterface] action:init
    
    .......
    
    [PushService] Login succeed!
    如图所示,客户端启动分为 4 步:
    检查 metadata 的 appKey 和 channel ,如果不存在,则启动失败
    初始化 JPush SDK,检查 JNI 等库文件的有效性,如果库文件无效,则启动失败
    检查 Androidmanifest.xml,如果有 Required 的权限不存在,则启动失败
    连接服务器登录,如果存在网络问题,则登陆失败,或者前面三步有问题,不会启动JPush SDK
  • 相关阅读:
    监控视频长度压缩算法
    获取客户端IP
    常用API接口签名验证参考
    .NET发布的程序代码防止反编译
    SQL Server 获取日期时间并格式化
    SQL Server2008R2可疑状态恢复
    限制网站报错信息暴露在外(客户端可以查看到)
    发布网站时线上网站务必把debug设置false
    IIS上的项目网站关闭Http请求中的Trace和OPTIONS
    使用uploadify上传大文件报 IO error #2038错误的解决方案
  • 原文地址:https://www.cnblogs.com/laoyimou/p/6211218.html
Copyright © 2011-2022 走看看