3.4 配置 so 库
目前个推SDK支持armeabi
、armeabi-v7a
、arm64-v8a
、mips
、mips64
、x86
、x86_64
这几种 CPU 架构,请根据项目情况指定所需的架构。
如果项目中包含的其他 so 库只支持其中某几种 cpu 架构,那么应该根据其他 so 库所支持的 CPU 架构的最小集来配置。否则如果在特定架构上未能支持所有 so 库,则很可能导致程序运行异常。切记!
- 在项目根目录下的
gradle.properties
文件中配置useDeprecatedNdk
参数,如下图所示:
android.useDeprecatedNdk=true
- 在
app/build.gradle
文件中的android.defaultConfig
下指定所需的 CPU 架构,如下图所示:
android {
…
defaultConfig {
…
ndk {
abiFilters “armeabi”, “armeabi-v7a”, “x86_64”
}
}
}
3.5 配置个推应用参数
- 在
app/build.gradle
文件中的android.defaultConfig
下添加manifestPlaceholders
,配置个推相关的应用参数(参见【步骤1】),如下图所示:
manifestPlaceholders = [ GETUI_APP_ID : "APP_ID", GETUI_APP_KEY : "APP_KEY", GETUI_APP_SECRET : "APP_SECRET" ]
复制
- 请根据【步骤1】获取到的应用参数进行相应替换
APP_ID
、APP_KEY
、APP_SECRET
的值
3.6 配置自定义推送服务
为了让推送服务在部分主流机型上更稳定运行,从2.9.5.0版本开始,个推支持第三方应用配置使用自定义Service来作为推送服务运行的载体。
- 在项目源码中添加一个继承自Android.app.Service的类,参考下列代码实现Service各个生命周期回调方法:
package com.getui.demo;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import com.igexin.sdk.GTServiceManager;
public class DemoPushService extends Service {
@Override
public void onCreate() {
super.onCreate();
GTServiceManager.getInstance().onCreate(this);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
super.onStartCommand(intent, flags, startId);
return GTServiceManager.getInstance().onStartCommand(this, intent, flags, startId);
}
@Override
public IBinder onBind(Intent intent) {
return GTServiceManager.getInstance().onBind(intent);
}
@Override
public void onDestroy() {
super.onDestroy();
GTServiceManager.getInstance().onDestroy();
}
@Override
public void onLowMemory() {
super.onLowMemory();
GTServiceManager.getInstance().onLowMemory();
}
}
- 在AndroidManifest.xml中添加上述自定义Service:
3.7 配置可选权限
- 上述接入方式已包含个推服务所需的所有必备权限。在此之外,您还可以配置以下可选权限,以便使用个推3.0提供的电子围栏功能。请在
AndroidManifest.xml
的根标签下添加如下配置:
;
3.8 导入通知栏图标
-
为了修改默认的通知图标以及通知栏顶部提示小图标,请在资源目录的
res/drawable-ldpi/
、res/drawable-mdpi/
、res/drawable-hdpi/
、res/drawable-xhdpi/
、res/drawable-xxhdpi/
等各分辨率目录下,放置相应尺寸的文件名为push.png
和push_small.png
图片,如图所示: -
建议的
push.png
图片尺寸如下:
ldpi: 48*48
mdpi: 64*64
hdpi: 96*96
xhdpi: 128*128
xxhdpi: 192*192
-
该图标
push.png
将会作为通知图标,如下所示: -
建议的
push_small.png
图片尺寸如下:
ldpi: 18*18
mdpi: 24*24
hdpi: 36*36
xhdpi: 48*48
xxhdpi: 72*72
xxxhdp: 96*96
-
该图标
push_small.png
将会作为通知图标展示在通知栏顶部,如下所示: -
push_small.png
设计规范
3.9 资源精简配置
- 如果您的工程启用了资源精简,即如果在
app/build.gradle
的android.buildTypes.release
下配置了shrinkResources true
,为了避免个推SDK所需资源被错误精简导致功能异常,需要在项目资源目录res/raw
中添加keep.xml
文件,路径如下:
- 在SDK资料包中
GETUI_ANDROID_SDK/资源文件/raw
目录下有keep.xml
示例文件,完整内容如下:
<?xml version="1.0" encoding="utf-8"?>
复制
- 如果你的项目工程已经使用了
keep.xml
,则只需在tools:keep
中增加对@layout/getui_notification
的声明,例如:
<?xml version="1.0" encoding="utf-8"?>
复制
- 如果您的工程使用了
AndResGuard
进行资源精简,为了避免个推SDK所需资源被错误精简导致功能异常,需要为个推添加白名单配置。
gradle集成AndResGuard
的方式,需要您在andResGuard
的whiteList
节点下添加如下代码:
andResGuard { ... whiteList = [ ... // for getui "R.drawable.push", "R.drawable.push_small", "R.layout.getui_notification", "R.id.getui_*" // 若您需要使用其他自定义推送图标,也需要在此处添加 ] ... }
复制
命令行使用AndResGuard
的方式,需要您在config.xml
文件中的节点下添加如下代码
复制
4. 编写集成代码
4.1 初始化SDK
我们建议应用开发者在Activity或Service类中调用个推SDK的初始化方法,确保SDK在各种情况下都能正常运行。一般情况下可以在主Activity的onCreate()或者onResume()方法中调用,也可以在多个主要界面Activity的onCreate()或onResume()方法中调用。反复调用SDK初始化并不会有什么副作用。
- 在应用的 Activity 里导入
PushManager
类,如下所示:
import com.igexin.sdk.PushManager;
复制
- 然后在 Activity 的onCreate()或者onResume()方法中调用个推SDK初始化方法。如果使用了自定义推送服务,初始化方法还需要传入新的自定义推送服务名:
// com.getui.demo.DemoPushService 为第三方自定义推送服务 PushManager.getInstance().initialize(this.getApplicationContext(), com.getui.demo.DemoPushService.class);
复制
4.2 接收推送服务事件
从2.9.5.0版本开始,为了解决小概率发生的Android广播丢失问题,我们推荐应用开发者使用新的IntentService方式来接收推送服务事件(包括CID获取通知、透传消息通知等)
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级安卓工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Android移动开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Android)
小福利:
在当下这个碎片化信息环境的时代,很多资源都可以在网络上找到,只取决于你愿不愿意找或是找的方法对不对了
很多朋友不是没有资料,大多都是有几十上百个G,但是杂乱无章,不知道怎么看从哪看起,甚至是看后就忘
如果大家觉得自己在网上找的资料非常杂乱、不成体系的话,我也分享一套给大家,比较系统,我平常自己也会经常研读。
2021大厂最新Android面试真题解析
各个模块学习视频:如数据结构与算法
只有系统,有方向的学习,才能在段时间内迅速提高自己的技术。
这份体系学习笔记,适应人群:**第一,**学习知识比较碎片化,没有合理的学习路线与进阶方向。**第二,**开发几年,不知道如何进阶更进一步,比较迷茫。第三,到了合适的年纪,后续不知道该如何发展,转型管理,还是加强技术研究。如果你有需要,我这里恰好有为什么,不来领取!说不定能改变你现在的状态呢!点赞+评论即可获得!
或直接点击这里前往我的GitHub中下载,就可以白嫖啦,记得给文章点个赞哦。
vMVPcSH-1711298862798)]
只有系统,有方向的学习,才能在段时间内迅速提高自己的技术。
[外链图片转存中…(img-oWD1UmmC-1711298862799)]
[外链图片转存中…(img-pq7Z0RzU-1711298862799)]
这份体系学习笔记,适应人群:**第一,**学习知识比较碎片化,没有合理的学习路线与进阶方向。**第二,**开发几年,不知道如何进阶更进一步,比较迷茫。第三,到了合适的年纪,后续不知道该如何发展,转型管理,还是加强技术研究。如果你有需要,我这里恰好有为什么,不来领取!说不定能改变你现在的状态呢!点赞+评论即可获得!
或直接点击这里前往我的GitHub中下载,就可以白嫖啦,记得给文章点个赞哦。