美文网首页极光征文
极光征文 | 我与极光推送在一起的第二年

极光征文 | 我与极光推送在一起的第二年

作者: 流船 | 来源:发表于2019-01-03 23:09 被阅读127次
image.png

背景

我是在两年前认识极光,没错是通过老师认识的,极光给了我第一个印象"推送",导致现在极光推送四个字已经成了一个领域的代名词。就和提起当当网 第一个印象就是"书城"一样,除了推送做的好以外,极光的IM、统计、短信认证等等我都在用。这篇文章主要分享一下我与极光的故事、并且分享android端集成推送的步骤。

当时在学校的时候,老师为了培养我们自己在网上查阅资料自学一些三方sdk的使用,例如:地图、统计、推送、等等以后项目会经常用到的一些知识。印象最深的就是"极光推送",因为极光是我接触的第一个三方的平台。参加工作之后推送一直在用极光的服务,比想象中的还易集成、效率高。

功能说明

极光推送(JPush)是一个端到端的推送服务,使得服务器端消息能够及时地推送到终端用户手机上,让开发者积极地保持与用户的连接,从而提高用户活跃度、提高应用的留存率。极光推送客户端支持 Android,iOS 两个平台。
本 Android SDK 方便开发者基于 JPush 来快捷地为 Android App 增加推送功能。

主要功能

  • 保持与服务器的长连接,以便消息能够即时推送到达客户端
  • 接收通知与自定义消息,并向开发者 App 传递相关信息

主要特点

  • 客户端维持连接占用资源少、耗电低
  • SDK 丰富的接口,可定制通知栏提示样式
  • 服务器大容量、稳定

步骤

第一步:创建应用

  • 首先去官网 极光官网注册账号并且创建应用。
image.png

创建完成之后拿到AppKey,没错这个AppKey就是让你创建好的应用,通过一些配置信息和你Studio上的project关联上。我的是: AppKey ee1deb569254b851888ed8fa

image.png

之后继续跟进推送设置。点击完成推送设置之后会设置包名


image.png

例如:我创建好的项目包名是 如下图: 点击保存之后应用就已经设置好了。接下来进行项目配置。


image.png

第二步:项目配置

1.首先去官网下载好极光的sdk下载页
2.下载成功后将Jpush-android-3.x.x-release.zip压缩包的内容解压如下图所示目录结构
3.打开下载好的包。如下图


我们需要做的就是把目录libs文件夹下的复制到我们的project中,接下来按照文档中的自动集成方式进行操作
image.png
  • 确认 android studio 的 Project 根目录的主 gradle 中配置了 jcenter 支持。(新建 project 默认配置就支持)
buildscript {

repositories {
    google()
    jcenter()
}
dependencies {
    classpath 'com.android.tools.build:gradle:3.1.2'
    

    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files
}
}

allprojects {
repositories {
    google()
    jcenter()
}
}
  • 在 module 的 gradle 中添加依赖和 AndroidManifest 的替换变量。这时候就用到了我们应用上的appkey

      defaultConfig {
      applicationId "com.example.mac.myfirstapp"//JPush 上注册的包名.
      minSdkVersion 15
      targetSdkVersion 26
      versionCode 1
      versionName "1.0"
      testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    
      ndk {
          //选择要添加的对应 cpu 类型的 .so 库。
          abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a'
          // 还可以添加 'x86', 'x86_64', 'mips', 'mips64'
      }
    
      manifestPlaceholders = [
              JPUSH_PKGNAME : applicationId,
              JPUSH_APPKEY : "ee1deb569254b851888ed8fa", //JPush 上注册的包名对应的 Appkey.
              JPUSH_CHANNEL : "developer-default", //暂时填写默认值即可.
      ]
      }
    
    
    dependencies {
    .....
    implementation 'cn.jiguang.sdk:jpush:3.1.6'  // 此处以JPush 3.1.6 版本为例。
    implementation 'cn.jiguang.sdk:jcore:1.2.5'  // 此处以JCore 1.2.5 版本为例。
    }
    
  • 根据文档上提示: 如果在添加以上 abiFilter 配置之后 android Studio 出现以下提示:
    NDK integration is deprecated in the current plugin. Consider trying the new experimental plugin

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

  • 到现在项目就已经成功集成极光推送了。我们可以在极光平台上模拟一下推送信息。


    image.png

进行到这里通知就已经完全可以收到了,但是如果要和后台交互的话,这样是完全不够的,需要我们自定义广播,还需要绑定设备id也就是RegistrationID,而这个id是怎么拿到的呢?文档已经给我们自定义好了Receiver参考:

public class MyReceiver extends BroadcastReceiver {
private static final String TAG = "MyReceiver";
 
private NotificationManager nm;
 
@Override
public void onReceive(Context context, Intent intent) {
   String content=intent.getStringExtra("msgContent");
    Bundle bundle=intent.getExtras();
    regId = JPushInterface.getRegistrationID(context);
   // SharedPreferencesUtils.
    Log.e(TAG, "广播的id " + regId);
    SharedPreferencesUtils.saveString(context, "regId", regId);

    if (null == nm) {
        nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
    }
     
    Bundle bundle = intent.getExtras();
    Logger.d(TAG, "onReceive - " + intent.getAction() + ", extras: " + AndroidUtil.printBundle(bundle));
     
    if (JPushInterface.ACTION_REGISTRATION_ID.equals(intent.getAction())) {
        Logger.d(TAG, "JPush 用户注册成功");
         
    } else if (JPushInterface.ACTION_MESSAGE_RECEIVED.equals(intent.getAction())) {
        Logger.d(TAG, "接受到推送下来的自定义消息");
                 
    } else if (JPushInterface.ACTION_NOTIFICATION_RECEIVED.equals(intent.getAction())) {
        Logger.d(TAG, "接受到推送下来的通知");
 
        receivingNotification(context,bundle);

    } else if (JPushInterface.ACTION_NOTIFICATION_OPENED.equals(intent.getAction())) {
        Logger.d(TAG, "用户点击打开了通知");
    
       openNotification(context,bundle);

    } else {
        Logger.d(TAG, "Unhandled intent - " + intent.getAction());
    }
}


 private void receivingNotification(Context context, Bundle bundle){
 String title = bundle.getString(JPushInterface.EXTRA_NOTIFICATION_TITLE);
    Logger.d(TAG, " title : " + title);
    String message = bundle.getString(JPushInterface.EXTRA_ALERT);
    Logger.d(TAG, "message : " + message);
    String extras = bundle.getString(JPushInterface.EXTRA_EXTRA);
    Logger.d(TAG, "extras : " + extras);
}

private void openNotification(Context context, Bundle bundle){
    String extras = bundle.getString(JPushInterface.EXTRA_EXTRA);
    String myValue = "";
    try {
        JSONObject extrasJson = new JSONObject(extras);
        myValue = extrasJson.optString("myKey");
    } catch (Exception e) {
        Logger.w(TAG, "Unexpected: extras is not a valid json", e);
        return;
    }
    if (TYPE_THIS.equals(myValue)) {
        Intent mIntent = new Intent(context, ThisActivity.class);
        mIntent.putExtras(bundle);
        mIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(mIntent);
    } else if (TYPE_ANOTHER.equals(myValue)){
        Intent mIntent = new Intent(context, AnotherActivity.class);
        mIntent.putExtras(bundle);
        mIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(mIntent);
    }
}
}

完结

到这里其实已经就算完工了,app端集成起来还是蛮简单的,如果有需要还可以继续完成自定义消息、通知样式、等等。这里也只是简单的介绍一下极光推送的使用步骤,如果开发者有进一步的了解的话还需要多看一下文档,或者移步至极光社区,今天写这个文章一是为了参加活动 二是记录一下脚印。希望一年之后的自己在看到这篇文章的时候能说一句"好菜 真的好菜啊哈哈~~" 进步的标志~ 如果有不足的地方还请更正一下 3q~

另外祝认真看完这篇文章的人 新年快乐 啊哈哈。

「本文为极光征文参赛文章」

相关文章

  • 极光征文 | 我与极光的缘分

    极光征文 | 我与极光的缘分 首先简单介绍下极光推送;极光推送(JPush)是独立的第三方云推送平台,致力于为全球...

  • 极光征文 | 我与极光推送在一起的第二年

    背景 我是在两年前认识极光,没错是通过老师认识的,极光给了我第一个印象"推送",导致现在极光推送四个字已经成了一个...

  • 极光推送

    极光推送视频地址,非常详细的极光推送视频 极光推送

  • 极光推送集成开发

    1.极光推送集成与设置 极光推送地址①注册极光推送账号。②在应用管理内按照步骤创建APP。③找到“文档——iOS—...

  • 极光推送

    极光推送 tagprivate void initJpush() {//TODO 极光推送// JPushInte...

  • 极光推送(二)——推送的使用

    前言 在极光推送(一)——配置中讲过了极光推送的配置,这节讲讲极光推送的使用参考文档极光官网 下面以我写的demo...

  • ios极光推送

    第一次使用极光推送,在这里把极光推送的步骤说一下,省的以后再次用到极光推送的时候,给忘了,其实,极光推送不难...

  • 极光推送进行远程推送

    借阅:极光推送进行远程推送 怎么使用极光推送进行远程推送 在极光官网注册极光推送创建一个应用在应用配置中导入两个证...

  • iOS开发之——极光推送

    极光官网设置 登录极光官网,完成注册、登录。 选择开发者服务->极光推送->立即体验极光推送.png 创建新的应用...

  • 极光征文 | iOS集成极光推送步骤

    iOS篇 导入框架 Cocoapods 导入 手动导入(比较麻烦,不是很推荐)在极光官网下载最新 SDK将 SDK...

网友评论

    本文标题:极光征文 | 我与极光推送在一起的第二年

    本文链接:https://www.haomeiwen.com/subject/asjcrqtx.html