-
安卓app接入推送的较优解决方案(包括厂商通道、集成推送的使用分析)
2019-03-30 19:03:31由于现在安卓系统越来越成熟,对某些权限的限制越来越大,而且各大厂商的定制系统对后台app监控做得也越来越好,如果自己实现一条后台线程来和后台服务器保持长连接,基本前台app退出不到几分钟就被杀死了,所以我...推送功能,是每一个app都会开发的功能,它可以很大程度的提高app的使用率和用户的保活率。但是问题来了,由于现在安卓系统越来越成熟,对某些权限的限制越来越大,而且各大厂商的定制系统对后台app监控做得也越来越好,如果自己实现一条后台线程来和后台服务器保持长连接,基本前台app退出不到几分钟就被杀死了,所以我选择通过接入第三方的推送SDK来实现推送功能的实现。
在给公司产品接入推送时,我实现了两种方案,原因下面会解释,第一种方案就是自己集成了目前系统已经开放的厂商通道,到目前为止,已经开发有厂商通道的系统有小米、魅族(flyme)、vivo、oppo、华为(华为移动服务HMS),下面是各平台的入口:魅族开发者平台 注意:魅族推送分为两种:一种是自己的厂商推送;一种是集成推送;两者不同,使用时记住看清,两者的后台有点区别的
华为开发者联盟 注意:如果要接入华为推送,就必须把华为整一个移动服务框架都要集成进去,这个有点坑,而且华为推送的后台并不支持全量推送,所以在开发时,还必须自己收集注册华为推送返回的token,这个就有点糟心了,增加很多的开发量。我还要吐槽一点,华为开发者的后台响应的有点慢,哈哈哈。
vivo开发者平台 注意:这个需要企业开发者账号才行,暂时不开放个人开发者使用
oppo开发者平台 注意:这个如果想要接入必须是已经上线的app才可以,而且他们后台也会有一定的审核,还有,他们对通知栏的自定义样式有一套很严格的要求,也是比较麻烦的。
上面就是各厂商通道的控制后台,一般要发布推送建议还是使用他们的后台进行操作,不建议自己使用他们的后台接口,因为,第一点,他们的后台挺成熟的,第二点,要接入推送一定不止接入一个厂商通道,这样大大增加后台开发的工作量,所以建议使用他们自己的后台。
在app接入推送时,要注意几点吧,都是我自己踩过的坑,哈哈哈
1、使用一个CallActivity作为跳转activity
这种坑出现的情况是这样的,点击推送后的点击事件是打开app,默认打开的是入口activity,我们的app当然不止仅使用一个activity承载,例如我们正在activityB的界面上,此时一条推送进来,我们点击后的事件是打开app,此时就会出现activityA(即入口Activity)位于栈顶,将ActivityB盖住。这样导致activity栈错乱,流程也可能会因此出现错误。
所以:我提供的解决方案是,指定点击通知栏后,跳转的activity为CallActivity(一个中转activity),只要我们在这个activity判断当前是否已经打开应用,如果已经打开就不做处理,如未打开,再跳转到ActivityA(即入口Activity)走正常打开app的流程。因为CallActivity最后都要finish自己,这样就可以保证不会干扰正常Activity栈,也就不会干扰正常的流程。如果想跳转其他页面,可以在这个基础上进行扩展。
2、建议将各厂商通道的集成的需要代码统一到一个library里面去,因为他们在manifest里面要配置的代码太多,这样就会导致主工程的manifest贼多东西。
3、在测试vivo和oppo机型,记得!记得!打开app的通知栏通知开关,他们是默认关闭的。
这是第一种方案,这种方案的缺点是每一次要推送都得跑到他们的后台去推送,一共又有几个后台,产品他们就不开心了。
所有就有了第二种方案,使用第三方集成推送,例如信鸽、极光,他们都集成了厂商通道,但是这种呢,有缺点,他们并没有把所有的厂商通道都集成进去,例如信鸽里面就还没有集成vivo和oppo,所以在这两种机型上,依旧会出现杀后台收不到推送信息的情况,下面是第三方集成推送的入口:
信鸽 注意:虽然它集成了厂商通道,我们还是要到各自系统的开发者平台上申请推送,再信鸽后台完善相应的信息
极光 同上
这两款是我们现在公司在用推送SDK感觉还是可以的,都有集成了厂商通道,推送效果还行,但是整体还是比不上第一种方案,原因由于这些集成推送都是免费的,所以在时效上、到达率上不能保证百分之百,而且前面说了他们并没有把现有的所有厂商通道都集成进去,so,在没有集成系统上,杀后台时基本收不到。
不过好消息是,谷歌爸爸准备出面解决这个局面了,哈哈哈,说要联合所有厂商一起打造一个推送平台,可能到时接入推送就可以很轻松了。
-
安卓推送服务设计思路图
2016-01-06 09:41:31安卓推送服务使用技术MQTT 使用 TCP/IP 提供网络连接 1.APP上报APP设备用户信息--------------------------------- 2.服务器记录下设备用户信息------------------------------- 3.通过服务端通过的推送页面根据...安卓推送服务使用技术MQTT 使用 TCP/IP 提供网络连接
1.APP上报APP设备用户信息---------------------------------
2.服务器记录下设备用户信息-------------------------------
3.通过服务端通过的推送页面根据已经记录的累计所有设备用户信息建立大量推送任务---------------------
4.循环判断连接和任务Task设备号匹配的,一旦匹配下发任务,下发成功后移除任务----------------------------------
-
安卓极光推送集成
2018-05-04 16:44:441:登录极光推送官网 https://www.jiguang.cn/(未注册的先注册)。2:登录后点用户到极光...(注意包名要和项目包名一致)3点击推送设置下载demo https://www.jiguang.cn/dev/#/app/c113c182cc5e60a1a78bfef1/pus...1:登录极光推送官网 https://www.jiguang.cn/(未注册的先注册)。
2:登录后点用户到极光开发者服务 https://www.jiguang.cn/dev/#/app/list#dev,点击创建应用。(注意包名要和项目包名一致)
3点击推送设置下载demo https://www.jiguang.cn/dev/#/app/c113c182cc5e60a1a78bfef1/pushEdit(下载解压)
4:把解压的包里面的libs内容复制到项目的libs里面(注意需要把里面的两个jar文件添加到mode的build.gradle里面)
//libs里面的
//添加后build里面会显示
5:把res里面的drawable文件和layout文件复制到项目里面,注意values里面的文件建议打开文件,把文件里面的内容复制到对应的文件里面(不要直接覆盖)。
6:在mode的build.gradle里面的Android花括号里面添加
//极光推送----------------- sourceSets { main { jniLibs.srcDirs = ['libs'] } }
//例如
注意 applicationId "com.jpeng.ssc"的对应包名
android { compileSdkVersion 26 buildToolsVersion "27.0.0" //极光推送----------------- sourceSets { main { jniLibs.srcDirs = ['libs'] } } //-------------------------- defaultConfig { applicationId "com.jpeng.ssc" minSdkVersion 15 targetSdkVersion 26 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } }
7:把src里面的文件复制到项目的src里面(建议建个文件夹放推送的文件)
//MainActivity可以不复制;如果有自己的Application可以不复制,(但是需要把注册的代码复制到自己的)
注意:MainActivity添加代码
//极光推送------------ public static boolean isForeground = false; @Override protected void onResume() { isForeground = true; super.onResume(); } @Override protected void onPause() { isForeground = false; super.onPause(); } //--------------------
8:在MyReceive里面吧
//send msg to MainActivity public static final String MESSAGE_RECEIVED_ACTION = "com.example.jpushdemo.MESSAGE_RECEIVED_ACTION"; public static final String KEY_EXTRAS = "extras"; public static final String KEY_MESSAGE = "message"; private void processCustomMessage(Context context, Bundle bundle) { if (MainActivity.isForeground) { String message = bundle.getString(JPushInterface.EXTRA_MESSAGE); String extras = bundle.getString(JPushInterface.EXTRA_EXTRA); Intent msgIntent = new Intent(MESSAGE_RECEIVED_ACTION); msgIntent.putExtra(KEY_MESSAGE, message); if (!ExampleUtil.isEmpty(extras)) { try { JSONObject extraJson = new JSONObject(extras); if (extraJson.length() > 0) { msgIntent.putExtra(KEY_EXTRAS, extras); } } catch (JSONException e) { } } LocalBroadcastManager.getInstance(context).sendBroadcast(msgIntent); } }
//注意要复制下载demo里面的而不是复制我上面的(我上面的包名不一致)
9:TestActivity是 点击消息后,跳转到的页面(可以自定义需求的页面效果)
10:AndroidManifest里面
把demo里面AndroidManifest的权限和application里面注册的activity复制(注意复制后的activity的name会报错,修改下路径就可以了)
例如:
<!-- Required 权限/--> <permission android:name="com.jpeng.ssc.permission.JPUSH_MESSAGE" android:protectionLevel="signature" /> <!-- Required --> <uses-permission android:name="com.jpeng.ssc.permission.JPUSH_MESSAGE" /> <uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.WRITE_SETTINGS" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <!-- Optional. Required for location feature --> <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> <!-- 用于开启 debug 版本的应用在6.0 系统上 层叠窗口权限 --> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /> <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> <uses-permission android:name="android.permission.GET_TASKS" /> <!-- Required 权限/--> <application android:name="MyApp" android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name="com.jpeng.ssc.MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> //《极光推送 <!-- For test only 测试高级功能 --> <activity android:name="jpush.PushSetActivity" android:label="@string/app_name" /> <!-- For test only 测试设置 --> <activity android:name="jpush.SettingActivity" android:label="@string/app_name" /> <!-- For test only 测试状态通知栏,需要打开的Activity --> <activity android:name="jpush.TestActivity" android:exported="false"> <intent-filter> <action android:name="jpush.testAction" /> <category android:name="jpush.testCategory" /> </intent-filter> </activity> <!-- Rich push 核心功能 since 2.0.6--> <activity android:name="cn.jpush.android.ui.PopWinActivity" android:exported="false" android:theme="@style/MyDialogStyle" /> <!-- Required SDK核心功能--> <activity android:name="cn.jpush.android.ui.PushActivity" android:configChanges="orientation|keyboardHidden" android:exported="false" android:theme="@android:style/Theme.NoTitleBar"> <intent-filter> <action android:name="cn.jpush.android.ui.PushActivity" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="com.jpeng.ssc" /> </intent-filter> </activity> <!-- Required SDK 核心功能--> <!-- 可配置android:process参数将PushService放在其他进程中 --> <service android:name="cn.jpush.android.service.PushService" android:exported="false" android:process=":mult"> <intent-filter> <action android:name="cn.jpush.android.intent.REGISTER" /> <action android:name="cn.jpush.android.intent.REPORT" /> <action android:name="cn.jpush.android.intent.PushService" /> <action android:name="cn.jpush.android.intent.PUSH_TIME" /> </intent-filter> </service> <!-- since 3.0.9 Required SDK 核心功能--> <provider android:name="cn.jpush.android.service.DataProvider" android:authorities="com.jpeng.ssc.DataProvider" android:exported="false" /> <!-- since 1.8.0 option 可选项。用于同一设备中不同应用的JPush服务相互拉起的功能。 --> <!-- 若不启用该功能可删除该组件,将不拉起其他应用也不能被其他应用拉起 --> <service android:name="cn.jpush.android.service.DaemonService" android:enabled="true" android:exported="true"> <intent-filter> <action android:name="cn.jpush.android.intent.DaemonService" /> <category android:name="com.jpeng.ssc" /> </intent-filter> </service> <!-- since 3.1.0 Required SDK 核心功能--> <provider android:name="cn.jpush.android.service.DownloadProvider" android:authorities="com.jpeng.ssc.DownloadProvider" android:exported="true" /> <!-- Required SDK核心功能--> <receiver android:name="cn.jpush.android.service.PushReceiver" android:enabled="true" android:exported="false"> <intent-filter android:priority="1000"> <action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED_PROXY" /> <!--Required 显示通知栏 --> <category android:name="com.jpeng.ssc" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.USER_PRESENT" /> <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> </intent-filter> <!-- Optional --> <intent-filter> <action android:name="android.intent.action.PACKAGE_ADDED" /> <action android:name="android.intent.action.PACKAGE_REMOVED" /> <data android:scheme="package" /> </intent-filter> </receiver> <!-- Required SDK核心功能--> <receiver android:name="cn.jpush.android.service.AlarmReceiver" android:exported="false" /> <!-- User defined. For test only 用户自定义的广播接收器--> <receiver android:name="jpush.MyReceiver" android:enabled="true" android:exported="false"> <intent-filter> <action android:name="cn.jpush.android.intent.REGISTRATION" /> <!--Required 用户注册SDK的intent--> <action android:name="cn.jpush.android.intent.MESSAGE_RECEIVED" /> <!--Required 用户接收SDK消息的intent--> <action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED" /> <!--Required 用户接收SDK通知栏信息的intent--> <action android:name="cn.jpush.android.intent.NOTIFICATION_OPENED" /> <!--Required 用户打开自定义通知栏的intent--> <action android:name="cn.jpush.android.intent.CONNECTION" /><!-- 接收网络变化 连接/断开 since 1.6.3 --> <category android:name="com.jpeng.ssc" /> </intent-filter> </receiver> // User defined. For test only 用户自定义接收消息器,3.0.7开始支持,目前新tag/alias接口设置结果会在该广播接收器对应的方法中回调 <receiver android:name="jpush.MyJPushMessageReceiver"> <intent-filter> <action android:name="cn.jpush.android.intent.RECEIVE_MESSAGE" /> <category android:name="com.jpeng.ssc" /> </intent-filter> </receiver> // 注册的key <meta-data android:name="JPUSH_CHANNEL" android:value="developer-default" /> <meta-data android:name="JPUSH_APPKEY" android:value="13e2240e228518983188dd00" /> <!-- </>值来自开发者平台取得的AppKey--> //极光推送》 </application>
10:运行项目,登录极光账户发送通知测试是否接受到信息。
注意:如果想修改接受信息时显示的图标可以在 复制需要的图片到文件夹drawable-hdpi里面名字必须为jpush_notification_icon
-
【极光推送】java后台使用第三方服务极光推送向安卓手机端推送通知(一)
2019-06-14 13:55:22JPush是经过考验的大规模APP推送平台,每天推送消息数超过5亿条。 开发者集成SDK后,可以通过调用API推送消息。同时,JPush提供可视化的web端控制台发送通知,统计分析推送效果。 JPush全面支持 Android, iOS, ...java后台使用第三方服务极光推送向安卓手机端推送通知第一篇是关于怎么注册极光服务并安装好安卓测试demo的。
极光推送,也叫jpush。JPush是经过考验的大规模APP推送平台,每天推送消息数超过5亿条。 开发者集成SDK后,可以通过调用API推送消息。同时,JPush提供可视化的web端控制台发送通知,统计分析推送效果。 JPush全面支持 Android, iOS, Winphone 三大手机平台。
jpush推送消息形式主要有四种:通知,自定义消息,富媒体和本地通知。
在这里我只针对安卓手机端的消息推送。为什么?因为ios手机端太麻烦了,那证书不好弄,所以暂时先明确对安卓手机的消息推送。
要使用极光推送,先要注册极光推送的平台:
进去找到后台:
没有账号就注册一个账号,对于一般的基础服务,极光推送是免费的。
登录后,就会进入极光的后台,会直接到应用管理的界面:
首先说一下为什么要创建应用。jpush向手机端推送消息,是指注册了jpush服务的应用程序(app)可以被推送,也就是说手机要有app才行,这里的创建应用并不是指真的你手机上要有一个完整的app。
可以看到之前我已经创建了一个名为conding喵的应用。一创建好可以看到右上角的安卓图标是亮的,说明直接向安卓手机端推信息没问题。
总用户是指安装了应用的人数,如果今日在线用户不为0的话,那么安装了这个应用的人在线的话会立即收到消息,没在线的打开应用才能收到。
编辑应用是时:
AppKey和Master Secret很重要,到时候写java后台服务要用的。这里不能给你们看,抱歉!
建好应用后,进入推送设置:
点击安卓,配置要下载的安卓测试demo的信息,这个demo已经集成了jpush了,不用写安卓,同时【查看继承指南】中,有详细的说明教你使用该平台。
填写包名,包名类似于java的包名,,额,,,安卓不就是用java写的吗?!一般就com.xxx.xx。不重名就行,然后点击下载demo。你以为下载的是个安卓应用apk文件吗?
no!是个安卓工程,需要打包成.apk文件的哪种,这是什么骚操作。。。当时下载我就傻眼了,不会安卓呀,电脑上没有安卓的环境啊?
解压后就这个鬼样,,,于是我找了学安卓的朋友让他帮我打个包。。。
安装到手机上后,打开应用就好:
点开后不了解最好不要瞎点,你已经可以在平台上直接推送信息了:
选好后直接发送就行:
看已经收到了。
安卓手机端的测试到此为止,至于java后台代码,先在这里略讲一下,java后台代码其实相当于这个操作:
-
安卓统一推送联盟成立!不卡顿的安卓系统终于来了!
2017-12-24 00:00:00正文大家都知道苹果有一套完整的消息推送机制, 你关掉app之后还是可以收到消息的,当然安卓也是有的,GCM(Google Cloud Messaging)消息推送服务,GCM消息推送依赖于谷歌服务,但由于国内用不了谷歌服务,使用不了... -
安卓推送和苹果IOS推送的差别
2017-02-14 19:19:45安卓的推送,因为google的服务无法使用,必须由APP开发者自行实现,于是如果APP的进程被清理或者终止掉了,那么就无法接收到推动。 苹果的推送是由IOS统一管理,所以不存在进程被杀的说法,相对于安卓更加稳定... -
一个安卓+tp5+个推的推送服务,机制怎样才好呢?
2018-04-10 11:00:35现在还是学生,想了解市场上这种机制是怎样的 服务器定时向所有用户推送?但是我想按每个用户的信息分析推送不同的数,而且app如果没有处于运行...现在的程序是tp5写的服务器端,一个安卓端,想用个推的sdk进行推送。 -
APP消息推送
2020-11-30 15:51:23序言 用户通知分为两类: 本地通知:本地通知是由 App 发送到当前设备上,不需要网络支持---------这里说的不需要网络支持指第三方网络。...IOS的推送服务只有一个,因为只有苹果一家公司用IOS系统。但是安卓. -
安卓集成极光推送SDK基础服务
2016-07-22 10:18:401.到极光推送官网注册用户。 2.创建一个应用根据包名申请app key,注意一个包名对应一个appkey,如果不对应则不能实现功能。 3.下载官网上的SDK,内附指南。 4.首先是各种粘贴复制,注意别漏掉 5.然后是配置... -
关于安卓Web App如何实现推送的努力(使用谷歌gcm)
2012-10-05 18:45:51在上次按照pushwoosh文档配置了google gcm服务之后,一直没能试验成功他们的sdk,今天终于成功收到推送了,第一次...拿到token之后lz不想用pushwoosh的服务器端推送服务,因为一旦要批量的去推,必须调用它们公司的re -
安卓党福音:国内安卓将统一消息推送标准
2017-06-13 23:34:05据工信部旗下的泰尔终端实验室发布消息称,安卓统一的消息推送标准目前已取得阶段性成果,未来将由终端厂商提供系统级推送服务(类似APNS的唯一推送通道),确保App的推送消息接收。 目前,泰尔终端实验室... -
视频监控安卓App客户端--Mjpg-streamer推流的播放
2019-12-22 17:25:59视频监控安卓App客户端其开发环境是Android Stdio。该软件实现了门禁系统的实时监控的视频的移动端的查看。该软件的设计较为简洁,采用两个文本输入框用于输入嵌入式Linux端服务器的IP地址,以及数据流推送的端口。... -
Android安卓集成融云推送踩坑
2020-10-11 15:02:05写在前面,为什么要用这个,我并不想,实际接入过程中也很多坑,搜一下几乎没有任何踩坑的博客,提交的工单回复的很官方,BTW,这可是付费的推送服务哦,居然没有技术支持的群,想要技术支持,可以,付钱吧,300块钱4个电话支持/... -
基于安卓客户端的百度云消息推送实现DEMO
2015-12-26 16:42:18百度云推送(Push)是一站式APP信息推送平台,为企业和开发者提供免费的消息推送服务,开发者可以通过云推送向用户精准推送通知和自定义消息以提升用户留存率和活跃度。 云推送适用于什么场景? 根据用户的活跃... -
APP消息推送后端java实现
2018-08-27 14:43:22Java后端实现安卓/IOS移动端消息推送(百度云推送): 转载地址:https://blog.csdn.net/xj80231314/article/details/50338719 极光推送经验之谈-Java后台服务器实现极光推送的两种实现方式: 转载地址:... -
安卓 android APP开发 即时通讯 聊天软件 Java 百度云推
2014-09-12 02:20:28项目为作者手工打造,以功能为出发点,仅供学习和参考 若用于商业用途而提出的优化/改版服务,暂时不接。 一、项目介绍 说明:本程序是仿微信5.2界面开发的基于...百度接到服务器消息推送给B,完成一整套推送服务。 -
Parse Server 支持 iOS 和安卓的消息推送
2017-06-05 13:57:00Parse Server 是前些天 Facebook 刚刚开源的兼容 ...目前该项目宣布支持 iOS 和 Android 平台的消息推送。可通过 PushAdapter 来实现。 使用方式: curl -X POST \ -H “X-Parse-Application-Id: YOUR_APP_ID” \ ... -
接入华为推送的隐藏bug---挖坑给安卓
2020-11-06 15:56:04为了向下兼容,所以我采用了intent的形式,但是发现安卓开发反映无法获取到消息体中data的参数(data参数需要推送服务APP10.0以上)。 在我最开始的开发中服务器下发消息的结构参照 Array ( [validate_only] =>... -
说说智能设备的消息推送服务
2014-04-08 14:06:43无论今天你使用的是IOS、安卓还是Blackberry,消息推送服务你一定用过。如IOS设备中的imessage,Blackberry的Pushmail,各种手机版本的微信以及各类app内置的广告或新闻推送服务。 今天我们讲讲几个常见的推送服务。 ... -
你的安卓手机为什么会卡-Android混乱生态的缺位者:推送
2020-11-06 15:26:21其中我认为缺少统一的推送服务、监管有力的应用市场是最为严重的问题,今天聊聊推送。 推送是现在APP必备的功能之一,你需要推送来提醒微信的新消息,或者淘宝最新的促销,提前设置好的日程… Android如何推送 国内... -
官方老爹之痛:为什么苹果能收到推送,而安卓不行?
2018-03-05 10:07:00还记得上次我们做过的试验么? 我们在 iOS 设备杀掉进程后能收到推送,而 Android 设备却不行。...当我们的 App 启动的时候,同时会启动我们App中附带的第三方厂商的推送服务,这时候 App 进程中就有... -
推送联盟
2019-05-31 18:38:52安卓有GCM(Google Cloud Messaging)消息推送服务,GCM依赖谷歌服务,国内用不了谷歌服务致用不了GCM,APP关掉收不到消息(流氓软件自启实现消息推送)。一些厂商有自己消息推送机制,如小米推出MiPush。尽管如此... -
安卓学习笔记5——个推透传服务体验
2014-03-18 15:38:411.引子 在上一篇中我们讲到如何使app能够接收个推推送信息。...以下步骤在上一篇配置好个推的基础上进行,具体可以查看安卓学习笔记4——推送服务初体验 为了能够接收透传信息,我们需要使用广播类, -
安卓子线程以及双进程服务守护(测试推送消息)、使用messenger实现组件和service的信息传递
2018-06-03 00:12:47mainactivity的CODEpackage ... import android.annotation.SuppressLint; import android.app.Activity; import android.app.Notification; import android.app.Notificati...
-
2021-03-04
-
MHA 高可用 MySQL 架构与 Altas 读写分离
-
实现 MySQL 读写分离的利器 mysql-proxy
-
libFuzzer视频教程
-
基于QoS模糊支配的并发服务组合方法
-
【报告分享】2020中国网络电影行业年度报告-中国电影家协会-202102.pdf(附下载地址)
-
中班心理健康活动教案 我该怎么办.docx
-
Learn-JS:Arquivos do curso-源码
-
点唱机:基于Angular 9框架的游戏(单人纸牌,二十一点,图像裁剪,faceapi,球)-源码
-
MySQL 数据库的基本操作(数据完整性约束)
-
2021年 系统分析师 系列课
-
中班心理健康活动课件 合作真快乐.pptx
-
【拯救者 】数据库系统概论速成
-
Amoeba 实现 MySQL 高可用、负载均衡和读写分离
-
Oracle_11g_Linux到Linux_DataGuard部署
-
Java 集合(List、Set、Map 等)相关问答归纳再整理
-
非同轴光栅选支的波导CO
-
数字人民币能使可视卡、指纹卡、可穿戴支付重获新生?
-
光纤中的紫外受激喇曼散射
-
孤独症谱系障碍儿童执行功能干预研究