精华内容
下载资源
问答
  • Android 厂商推送集成

    千次阅读 2019-09-19 10:25:44
    好不容易集成完了个推的推送 SDK,美滋滋的准备划一会儿水,鸟哥吩咐为了保证应用杀死后也可以接收到推送,并且降低服务端的维护渠道的开发成本,还得集成下个推的厂商渠道。等等!!!什么是厂商?! 我没...

    前言

    按劳分配,多劳多做。好不容易集成完了个推的推送 SDK,美滋滋的准备划一会儿水,鸟哥吩咐为了保证应用杀死后也可以接收到推送,并且降低服务端的维护多渠道的开发成本,还得集成下个推的多厂商渠道。等等!!!什么是多厂商?! 我没看到官网文档里面有任何关于多厂商的字样。鸟哥慢悠悠道来这是 VIP 才有的专属通道。行吧,又去联系他们的支持了,港真他们技术支持发的集成资料我看的还是不太明白(也许是我太菜了),所以我再次总结了下,下文是基于个推多厂商资料包的一个简单理解,关键步骤也都记录下来了。牺牲我一个,造福大众。

    思维导图

    在这里插入图片描述

    集成

    集成分为 maven 集成和手动集成,下文讲的全部都是 maven 集成,而手动集成的文章是不存在,这辈子都不会去尝试手动集成==

    添加 maven 地址

    • 在项目根目录的 build.gradle 中添加 maven 库,不然 load 不到 aar 包
    allprojects {
        repositories {
    			jcenter()
            maven {
              url 'http://mvn.gt.igexin.com/nexus/content/repositories/releases'
            }
        }
    }
    

    添加依赖库

    在 app 下面的 build.gradle 中添加最新版本的多厂商插件

    dependencies {
        implementation fileTree(dir: 'libs', include: ['*.jar'])
        implementation 'com.getui:sdk:2.13.3.0'
        implementation 'com.assist:oppo:1.0.3'
        implementation 'com.assist:vivo:1.0.3'
        implementation 'com.getui:hwp:1.0.6'
        implementation 'com.getui:mzp:1.0.7'
        implementation 'com.getui:xmp:1.0.5'
    }
    

    工程里配置多厂商参数

    在 项目/app 的 build.gradle 中配置之前申请到的推送参数

    defaultConfig {
            applicationId "com.getui.demo"
            minSdkVersion 15
            targetSdkVersion 26
            versionCode 1
            versionName "1.0"
            manifestPlaceholders = [
                    GETUI_APP_ID    : "首先你得集成个推",
                    GETUI_APP_KEY   : "没个推哪来个推多厂商",
                    GETUI_APP_SECRET: "大兄弟,个推参数请看上一篇",
    
                    OPPO_APP_KEY   : "顺序别写反了",
                    OPPO_APP_SECRET  : "写反了不是闹着玩的",
                    VIVO_APP_ID   : "再注意是否前后空格",
                    VIVO_APP_KEY  : "有空格你会检查到自闭",
    
                    XIAOMI_APP_ID   : "没参数就不要运行了",
                    XIAOMI_APP_KEY  : "瞎跑还不如不跑",
    
                    MEIZU_APP_ID    : "还有最后一点",
                    MEIZU_APP_KEY   : "华为的推送真坑爹,别忘了证书校验",
    
                    HUAWEI_APP_ID   : "鸟哥威武!!!"
            ]
            ...
        }
    

    等等。。。。 ,这就集成完了?!,拷贝 三次就完事了?!那是不是接着只需要把参数填上去就完事了,对!万万没想到邂逅多厂商是如此的方便。

    厂商参数获取

    正如上篇个推集成所讲的,在集成个推推送的时候需要“注册-登录-创建”三连击,因为我选择了华为、小米、魅族、vivo、OPPO 这 5 个厂商通道,那么此处是不是要进行 5*三连击
    随便打开一个厂商的官网发现在注册账号的时候还需要填写工商税号巴拉巴拉巴。。。。赶紧跑去问大鸟哥这些账号是不是需要我去注册下,大鸟哥让我去联系姓苟的产品经理。幸运的是公司因为一些现有的业务,已经有这些厂商的开发者账号了,顺利的从苟产品那边获取了各个厂商的登录账号,直接去各个平台登记 APK 即可,所以接下去就再不介绍如何注册-登录的流程了,因为我也没经历过???。
    在这里插入图片描述

    华为参数获取

    登录成功后进入管理中心,就是这个可爱的界面。点击 Push 按钮
    在这里插入图片描述
    点击 Push 按钮
    在这里插入图片描述
    特别要注意的是,这个证书指纹是我们 APK keystore 上的指纹,这是华为推送和其他推送最大的区别。每一个 APP 都需要指纹,如果你们家的 APP 连证书都不需要的,那怕是推不动了。
    在这里插入图片描述
    在鸟哥的引导,我一顿操作, APP 创建成功后,就会得到这些参数

    在这里插入图片描述
    特别关注 APPID 和 APPSecret 这两个参数,后续我们会再次用到。

    小米参数获取

    接下去进入小米参数获取环节,小米推送还是比较成熟的,配置比较简单。
    登录完后进入管理界面
    在这里插入图片描述

    点击左上角的创建应用

    在这里插入图片描述
    自家 APK 的参数往上面怼,怼就完事了,不需要向华为推送那样需要审核。

    在这里插入图片描述
    小米推送有三个参数,AppID,AppKey,AppSecret,记牢了,后续还会再用到的。

    魅族参数获取

    魅族也类似的,登入账号->进入开发者平台->创建应用->获取参数,步骤都是类似的,我就直接上图了
    在这里插入图片描述
    千万要注意了,个推多厂商的推送渠道是 Flyme推送,别点隔壁的 集成推送
    [外链图片转存失败(img-8w0F7BZD-1568858738601)(魅族开发平台管理者界面.jpg)]

    点击右上角的新建应用
    在这里插入图片描述
    参数填完后,会得到一个 APPID,就是我上上张打了马赛克的地方,这个也得用小本本记下来。

    OPPO 参数获取

    注意啦,独立开发者就不需要注册了,因为注册需要营业执照号,并且必须要在厂商平台发布应用后才能拿到对应有效的参数,要先发布的,发布的!!!
    在这里插入图片描述
    填写 应⽤用名称 和 应⽤用包名 以及上传 应⽤用图标 创建应⽤用
    在这里插入图片描述
    查看应⽤用信息,获取 OPPO App ID、OPPO App Key、OPPO App Secret、OPPO Master Secret
    在这里插入图片描述

    VIVO 参数获取

    注意啦,独立开发者就不需要注册了,因为注册依旧需要营业执照号,并且必须要在厂商平台发布应用后才能拿到对应有效的参数,要先发布的,发布的!!!

    在这里插入图片描述
    点击创建应用后,填写 apk 的参数
    在这里插入图片描述
    创建成功后,就会获得 APP ID,APP Keyy,APP secret
    在这里插入图片描述

    开通个推多厂商权限

    前面没全部完成也么的是,文章还是可以接着看的???,注册了这么多的平台,总不能在推送的时候 5 个平台来回切换吧!!!这个时候就需要个推闪亮登场了,我们通过个推 DOS 平台来下发推送,个推会把这几个厂商通道进行整合。所以就去个推平台那边把上述申请到的参数填写到个推 DOS 平台中。
    这个配置界面藏的有点深的,首先得联系他们的技术支持对某个应用开通这个权限,权限开通还得审核。审核完成后我居然找不到配置参数页面,我傻乎乎的还去问对方的技术支持配置界面在哪里,感觉自己像个小鸟。大家睁大眼睛看仔细了。
    登录个推开发者管理后台 点击 创建推送
    在这里插入图片描述
    展开配置管理后点击特殊机型按钮填写完这些参数。
    在这里插入图片描述
    注:在个推平台上开发者无法自行配置 VIVO 的参数,所以需要将获取到的vivo的appid、appkey、appsecret、应用包名以及个推的 appid 提交给个推技术支持去配置;

    开到这里也挺不容易的,说明大家是真的想集成多厂商的,后面就测试环节了???

    测试

    完成了以上步骤,现在就要进入测试环节了。首先我们得保证个推推送是可以正常运行的。个推推送SDK集成请点我

    获取个推 cid

    运行你的 APK并且成功调用个推初始化接口,在 logcat 里面输入 clientid ,就可以看到在控制台输出日志了,这个 clientID 相当于此 APP 在该设备上的唯一识别码。
    在这里插入图片描述

    厂商 token 获取

    在 logcat 里面输入 Assist_ 就会出现这个亲切的画面。
    在这里插入图片描述
    这里面的 other_token 代表是华为手机的厂商返回的 token。
    以华为推送为例,过滤完成后logcat后出现 907135005 则代表是 当前区域不支持此业务,有没有觉得我回答的很专业,emmmm,其实我只是一个合格的搬运工,华为官方文档里都有,华为通用错误码,其他厂商的错误码我就不展开了。

    服务端推送模板

    前面用个推平台上推送通知是没问题啦,然后你肯定会想,不对啊,实际使用的时候除了运营会去用个推平台上推,大部分其他场景应该是服务端使用代码去推送的,好人做到底,我请教了服务端的飞翔同学,顺带也把服务端推送也一起整理了,由于我们公司服务端使用的是java,所以就用java代码来做示范了,当然个推实际上对大部门流行的语言都提供了服务端sdk,如果实在用的语言比较冷门,也支持 restful 接口的方式来处理。
    用过推送的人,肯定都知道推送到手机的类型分为两个大类,分别是通知栏消息和透传消息,而通知栏消息由于点击通知后一定要有后续行为,一般分为启动应用、打开网页、打开应用内的指定activity、发送自定义透传消息。而这些东东在个推服务端sdk中被称为模板,敲重点了哦,推送的不同形式在个推这边称为模板,以最常见的通知模板做个栗子,可以这样写代码(以下代码从个推官网摘抄):

        IGtPush push = new IGtPush(url, appKey, masterSecret);
        // STEP1:选择模板
        NotificationTemplate template = new NotificationTemplate();
        // 设置APPID与APPKEY
        template.setAppId(appId);
        template.setAppkey(appKey)
    
    
        // STEP2:设置通知样式
        Style0 style = new Style0();
        // 设置通知栏标题与内容
        style.setTitle("请输入通知栏标题");
        style.setText("请输入通知栏内容");
        // 设置通知是否响铃,震动,或者可清除
        style.setRing(true);
        style.setVibrate(true);
        style.setClearable(true);
        style.setChannel("通知渠道id");
        style.setChannelName("通知渠道名称");
        style.setChannelLevel(3); //设置通知渠道重要性
        template.setStyle(style);
    
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/20190919100618910.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTM2NTE0MDU=,size_16,color_FFFFFF,t_70)
        // STEP3:设置推送其他参数
        SingleMessage message = new SingleMessage();
        message.setData(template);
    
    
        // STEP4:执行推送
        push.pushMessageToSingle(message, target);
    

    稍微简单的整理下每种通知类型对应的推送模板。

    • 通知模板(包含点击后打开应用或者透传)-> NotificationTemplate
    • 透传模板-> TransmissionTemplate
    • 通知点击后打开网页模板 -> LinkTemplate
    • 通知点击后打开应用内指定页面模板 -> StartActivityTemplate

    说了这么多,这些东西跟厂商推送有毛线关系啊?实际上呢,这些模板都会在应用存活的时候使用个推的通道下发下去,如果应用没存活呢,就会自动转换成厂商的消息下发,感觉这个还是挺方便的,让我一个个对接每个厂商的推送模板,还得考虑兼容问题,想想就脑阔疼。

    但是鸟弟在实际使用的时候,发现了一个问题,我们的发送模板大部分场景是自定义透传消息,然后发现在应用没存活的时候,万万没想到厂商消息根本就收不到,一脸懵逼的去问了个推的技术支持,技术支持告诉鸟弟**,厂商的透传消息在应用没存活的时候,照样是收不到的,所以他们想了一个办法,搞了个降级方案,把透传消息在应用没存活的时候,转换成厂商的通知栏消息发下去**,使用方法是在 TransmissionTemplate 里还可以通过 set3rdNotifyInfo 方法把要设置的厂商通知栏消息的参数设置进去。

       TransmissionTemplate template = new TransmissionTemplate();
       template.setAppId(appId);
       template.setAppkey(appKey);
       template.setTransmissionContent(payload);
       template.setTransmissionType(2);
       Notify notify = new Notify();
       notify.setTitle("厂商通知栏消息标题");
       notify.setContent("厂商通知消息内容");
       notify.setType(GtReq.NotifyInfo.Type._intent);
       notify.setIntent("intent:#Intent;component=com.yourpackage/.NewsActivity;end");
       template.set3rdNotifyInfo(notify);
    

    这里的厂商通知栏点击的后续行为也可以设置为透传、打开指定应用、打开网页等。通过集成个推多厂商,再也不需要去适配每个厂商的通知模板了,一个个去适配真的是让人头大。飞翔对这一点赞不绝口,不然他需要写 5 个通知模板,真的是让人心累。

    推送测试

    测试厂商推送的时候最好找一个高版本的厂商手机,然后进入应用管理界面强制关闭应用,接着在个推平台上面推送通知,这个时候就会收到通知啦,这条通知就是一条纯纯的厂商通知,如果普通用户强制停止应用是打死也收不到通知的

    总结

    现在高版本手机的占有率越来越高,而且厂商在推送这块的限制也越来越明显,个推多厂商推送接入后,从个推后台的报表数据来看,推送到达率在大幅度提升???,日活量也有了较为明显的提升???。有啥集成问题可以在评论区给我留言或者可以直接找他们的技术支持–

    厂商地址

    小米开放平台: https://dev.mi.com/console/appservice/push.html
    华为开发者中心: https://developer.huawei.com/consumer/cn/appgallery/
    魅族开放平台: http://open.flyme.cn/
    VIVO开放平台: https://dev.vivo.com.cn/home
    OPPO 开放平台: https://open.oppomobile.com/

    展开全文
  • 极光推送推送消息

    千次阅读 2018-10-09 16:22:51
    极光推送推送消息问题解决猜测为什么会出现问题 问题 sdk版本号: // 极光推送 compile 'cn.jiguang.sdk:jpush:3.1.6' // 此处以JPush 3.1.6 版本为例。 compile 'cn.jiguang.sdk:jcore:1.2.5' // 此处以...

    极光推送收不到推送消息

    问题

    sdk版本号:

    // 极光推送
    compile 'cn.jiguang.sdk:jpush:3.1.6'  // 此处以JPush 3.1.6 版本为例。
    compile 'cn.jiguang.sdk:jcore:1.2.5'  // 此处以JCore 1.2.5 版本为例。
    

    新版的极光推送 gradle 自动配置可能是sdk自身有bug,导致推送服务无法正常启动,偶尔能正常启动,不是很稳定。

    在logcat中查看找不到极光推送服务的进程:

    在这里插入图片描述

    进程中缺少 :multiprocess:pushcore进程,收不到推送就很正常了。

    解决

    ApplicationonCreate方法中添加初始化方法:

    // init jpush service
    JPushInterface.setDebugMode(BuildConfig.DEBUG);
    JPushInterface.init(this);
    

    添加后再启动应用就会看到这两个进程了:

    在这里插入图片描述

    猜测为什么会出现问题

    使用老版本的极光推送和umeng等其他第三方服务,我们都会看到需要调用下初始化函数以启动服务;新版的sdk因该使用了 ApplicationLifeCycle 接口来做的初始化,但是存在bug导致service不能每次都正常启动。

    展开全文
  • 微信公众号推送多条图文消息,可以在关注回复,扫描二维码回复,群发消息里实现,其他场景均不能推送多条图文消息,微信早已禁用了部分场景功能的多图文消息使用。 微号帮功能有关注回复、扫描二维码回复,群发消息...

    微信公众号推送多条图文消息,可以在关注回复,扫描二维码回复,群发消息里实现,其他场景均不能推送多条图文消息,微信早已禁用了部分场景功能的多图文消息使用。

    微号帮功能有关注回复、扫描二维码回复,群发消息,可以向粉丝推送多条图文消息,主要介绍扫描二维码回复多图文消息,二维码带统计关注粉丝来源,粉丝通过这个二维码关注都能统计到,粉丝取消也能监测到。

     

    渠道二维码生成

    使用渠道二维码生成功能,创建扫描回复多图文消息,选择修改粉丝备注,普通场景尽量不使用打标签分组,因为公众号接口上限为100个标签分组!

     

    二维码创建完成,开始设置扫码弹出信息

     

    扫码弹出信息》多图文设置

    这里演示采用关联关键词,已在关键词回复功能设置了一个八条图文关键词

     

    八条图文关键词设置,使用关键词回复功能创建关键词,所有功能都能相互调用。

     

     

    多图文消息设置,支持粉丝昵称、粉丝头像动态参数,表情符号,点击图文跳转外部链接

     

    扫描刚才创建的二维码,带数据统计

    因为公众号粉丝已经是关注的粉丝,所以粉丝统计在已关注里。

     

    展开全文
  • 极光推送个app同时进行推送

    千次阅读 2019-10-09 16:33:11
    用过极光推送的用户们都知道,如果我们有一款app应用,并且需要推送功能,那么我们就需要在极光后台创建一个应用,即创建生成了一组appKey和masterSecret,然后我们需要在后台配置文件中配置对应的推送配置信息...

    前言

    用过极光推送的用户们都知道,如果我们有一款app应用,并且需要推送功能,那么我们就需要在极光后台创建一个应用,即创建生成了一组appKey和masterSecret,然后我们需要在后台配置文件中配置对应的推送配置信息(title、appKey、masterSecret、tag、apnsProduction),那么如果我们有三款应用呢,同时也需要实时推送功能,此时就需要在极光的后台创建新的应用,即生成三组不同的appKey和masterSecret,那么问题来了,此时我们需要将这三款应用同时进行推送相关消息,该如何做呢?因为配置文件中读取的是一组appKey和masterSecret值。

    思路

    1、首先最容易想到的解决方案是,既然一个应用对应一组appKey和masterSecret,进行相关的推送消息没有问题,那么有三款应用我们就利用for循环进行循环推送不就完事了嘛。既然利用循环,那么就该考虑在配置文件中编写三组配置信息还是在数据库中创建表,将对应的app应用的相关appKey和masterSecret等信息存入表中,然后推送时去进行读取,顺着这个思路做下去看似也没有问题,那么如果以后继续上架其他应用时,就需要在配置文件中或者数据库表中配置相关的信息,但如果有几十款或上百款应用呢?就会出现这样的逻辑顺序:

    A应用创建连接->A推送应用消息->A应用关闭连接->B应用创建连接->B推送应用消息->B应用关闭连接->C应用创建连接->C推送应用消息->C应用关闭连接...............

    2、我比较懒,所以我没有急着去按照1思路去做,设想如果我们可以利用单个推送的方法对这些所有的应用进行推送岂不是更方便,那么有没有这样的appKey和masterSecret呢?答案肯定是有的,

    首先我们登陆极光后台,会发现菜单栏中有一个分组管理

    然后进入分组详情。可以看到有GroupKey和Group Master Secret,既然有那么肯定就可以对GroupKey和Group Master Secret进行实时推送,创建好分组,在应用列表中添加测试应用后,方可进行代码测试!

     

    话不多说上代码!

    import cn.jiguang.common.resp.APIConnectionException;
    import cn.jiguang.common.resp.APIRequestException;
    import cn.jpush.api.push.GroupPushClient;
    import cn.jpush.api.push.PushResult;
    import cn.jpush.api.push.model.Platform;
    import cn.jpush.api.push.model.PushPayload;
    import cn.jpush.api.push.model.audience.Audience;
    import cn.jpush.api.push.model.notification.AndroidNotification;
    import cn.jpush.api.push.model.notification.IosNotification;
    import cn.jpush.api.push.model.notification.Notification;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.stereotype.Component;
    
    import java.util.HashMap;
    import java.util.Map;
    
    @Component
    public class GroupPushUtils {
    
        private final static Logger LOG = LoggerFactory.getLogger(PushUtils.class);
    
    
        @Value("${groupJPush.groupKey}")
        private String groupKey;
    
        @Value("${groupJPush.groupMasterSecret}")
        private String groupMasterSecret;
    
    
        public PushResult sendGroupPush(PushVo pushVo) {//pushVo是传入参数,不再过多解释
            GroupPushClient groupPushClient = new GroupPushClient(groupMasterSecret, groupKey);
            final PushPayload payload = buildPushObject_android_and_ios(pushVo);
            PushResult pushResult=new PushResult();
            try {
                Map<String, PushResult> result = groupPushClient.sendGroupPush(payload);
                for (Map.Entry<String, PushResult> entry : result.entrySet()) {
                    pushResult = entry.getValue();
                    PushResult.Error error = pushResult.error;
                    if (error != null) {
                        LOG.info("AppKey: " + entry.getKey() + " error code : " + error.getCode() + " error message: " + error.getMessage());
                    } else {
                        LOG.info("AppKey: " + entry.getKey() + " sendno: " + pushResult.sendno + " msg_id:" + pushResult.msg_id);
                    }
    
                }
            } catch (APIConnectionException e) {
                LOG.error("Connection error. Should retry later. ", e);
                LOG.error("Sendno: " + payload.getSendno());
    
            } catch (APIRequestException e) {
                LOG.error("Error response from JPush server. Should review and fix it. ", e);
                LOG.info("HTTP Status: " + e.getStatus());
                LOG.info("Error Code: " + e.getErrorCode());
                LOG.info("Error Message: " + e.getErrorMessage());
                LOG.info("Msg ID: " + e.getMsgId());
                LOG.error("Sendno: " + payload.getSendno());
            }
            return pushResult;
        }
    
        public PushPayload buildPushObject_android_and_ios(PushVo pushVo) {
            Map<String, String> extras = new HashMap<String, String>();
            extras.put("parameter1", "value1");
            extras.put("parameter2", "value2");
            return PushPayload.newBuilder()
                    .setPlatform(Platform.android_ios())
                    .setAudience(Audience.all())
                    .setNotification(Notification.newBuilder()
                            .setAlert(pushVo.getNotification())
                            .addPlatformNotification(AndroidNotification.newBuilder()
    //                                .setTitle("Title")//此参数根据实际需要可用可不用
                                    .addExtras(extras).build())
                            .addPlatformNotification(IosNotification.newBuilder()
                                    .incrBadge(1)
                                    .addExtras(extras).build())
                            .build())
                    .build();
        }
    
    }
    

    我们不生产代码,我们只是代码的搬运工!

    这篇文章其实没有任何深度,其主要想表达的是我们在实际工作中,遇到问题应该如何去思考问题以及如何去解决问题,从而寻求解决问题的最佳方案,正如世界上有很多东西都是由懒人发明的,现实中,当你懒于去做某件事时,请相信一定会有解决这个问题的懒人办法,如果真的没有,那么如果你能够想出来并且能做出来,那么你就是一个创造者!

    微信扫描下方二维码(我的个人微信公众号:程序员Hotel), 更多优质资源及优质文章及时获取,请大家多多支持哦!

    展开全文
  • 升级XCode8.3.1后, 在debug模式下, 打包的ipa是不能推送的.我的分析由于XCode自动配置证书, 如果你打包ipa后, 不管你选择debug还是release的模式, XCode的自动配置过程, 都是匹配dis(发布)的证书, 所以在后
  • 在本地建立t4仓库,并进行git init初始...在将本地仓库使用git push推送到远端仓库中时,由于远端仓库中在以MIT协议初始化的时候产生了LICENSE文件,而本地仓库没有这个文件,所以提示不能进行推送合并。 此时需...
  • 在一个移动操作系统中,APP可以实现一个叫做消息推送(push)的功能。push是能够起到提醒或者唤醒用户的作用的,也是app运营渠道之一,运用得当可以帮助产品运营人员更高效地实现运营目标,相反盲目运用也会让APP变...
  • 物联网开发 第4讲 中移OneNET HTTP推送服务接入 在使用OneNET平台时,如果我们自己开发应用,基本上会有获取设备的上下线信息以及设备... 使用OneNET提供的数据推送的服务,实时推送设备上下线状态以及数据点...
  • 极光推送demo(绝对不是官方的demo)

    热门讨论 2015-09-19 18:01:58
    绝对不是官方自动生成的demo,要说唯一的相同点,就是设置免打扰时段是直接复制过来的,之前被极光折磨时,也找了很demo子看看,...我的这个demo不能好,但至少不是官方demo并且界面做的还算可以,至少我自己这样认为
  • 极光推送在众多的消息推送里,口碑算是很好的,项目中我负责的是这一块,就整理了这篇博客帮助记忆; 极光推送官方SDK文档:https://docs.jiguang.cn/jpush/server/sdk/java_sdk/ 错误码信息:...
  • 进入app,发送消息,消息正常接收,连续2次back退出app后,收到极光推送消息,pushService进程存在,app主进程被杀。华为,魅族都在相同条件下接收消息,**小米手机 收到消息** 针对小米手机分析分析: 1....
  • android各版本对应的api情况,而android8.0以及之后的版本,notifycation为了更安全,又增加了channel的写法,代码如下 if (Build.VERSION.SDK_INT >= 26) { ...这样就完美解决收到推送消息,但是通知栏显示的问题
  • 在Andorid 8.0以上的设备集成推送SDK后,推送接收到,日志显示通知已经从服务端发送到客户端,但是并未创建通知,这是怎么回事?应该如何解决? 2. 问题原因 自8.0(API Level 26)起,Android 推出了...
  • 极光推送的配置,在官方文档中已经很详细地描述了;有手动导入跟jcenter导入两种方式,推荐使用jcenter;//在gradle中添加 android { ...... defaultConfig { applicationId "com.xxx.xxx" //JPush上注册的包名. ...
  • Android App收推送的消息

    千次阅读 2019-08-30 16:51:46
    推送功能可以算是每个App的都会开发的基本功能了,服务端可主动向其用户推送各类消息,结合精准的用户画像分析,给合适的用户在合适的场景下推送合适的内容...App被杀死后,它是接受到第三方推送的,那怎么办呢?...
  • 最近项目需要完善用户账号登录的唯一性,于是极光推送就又要被集成了(根据推送来的消息判断账号在其他设备登录)。集成过程自然很轻松参照:https://docs.jiguang.cn/jpush/client/iOS/ios_sdk/ 但是! 怎么会那么...
  • 1、申请极光的包名一旦更改,则该包名对应的key就不能再使用,需要拿新的包名去申请一个新的key。 2、在AndroidManifest文件中,记得替换自己新的key 3、卸载该应用,重新安装方可正常使用,否则会出现极光延迟...
  • 现在接别人的活,做的项目中,集成了激光推送服务,但是有些用户要不然推送,来就了就很,而且只有在应用程序开启的时候,也就是系统进程运行这这个应用才有推送,如何做到应用没开启也收到推送通知呢?...
  • 感觉这次的爬坑,很有必要记录一下,网上找了很资料,确实有很有用的,但是都全,可能是我没有找到全的,最近太忙就简单记录下需要注意的点吧:1、后台要设置对setOptions(Options.newBuilder()....
  • 最近项目中要集成友盟推送,之前没有做过友盟的推送,所以就研究了一下文档,集成步骤和其他的推送平台(极光,百度等)大致步骤都是一样的,这里就不多做解释了,我来说一下我为什么没有接受到推送的原因吧。...
  • 想请教一下,怎么样可以让当前App从后台中清掉的时候,集成的极光推送推送服务被 清掉?因为推送服务被清掉之后就接收推送的信息了。现在是只有在软件在被用户操作的时候才可能接收到推送的消息
  • 这两天有个项目要用到极光推送 以前也经常用 但是这次按照以前那么做 居然不好使 web可以收到 但是api收到 但是安卓居然可以 这就尴尬了 资讯了好长时间 后来在社区的论坛里面 发现了一张图 上面说要传一个参数 ...
  • 在好几年前,就已经注意到DDPush这款推送中间件,不过近来发展也还是停留在V1.0的基础上,不免惋惜!恰好最近正在深入研究Java Socket通信编程,也顺带再看看这款应用。官网地址:http://www.ddpush.net/ 目录 ...
  • Flutter 通知栏消息推送

    千次阅读 2021-01-16 18:19:23
    此博文要实现的通知栏的消息推送如下图所示: 通知栏的消息推送可简单分为本地消息推送和网络消息推送。 这里主要介绍的是本地消息推送。 使用的package是官方发布的flutter_local_notifications,版本是3.0.3,...
  • 这种推送功能是好的一面,但是也会经常看到很多推送过来的垃圾信息,这就让我们感到厌烦了,关于这个我们就不能多说什么了,毕竟很商家要做广告。本文就是来探讨下Android中实现推送功能的一些解决方案,也...
  • 如果主机名匹配,则删除此连接。  解决办法:  1.-Dweblogic.security.SSL.ignoreHostnameVerification=true  用此设置关闭主机名验证,具体可在startWebLogic.cmd文件中的任意一行加入一条命令:  ...
  • 说Android端外推送比较烦,实际有两层意思:首先是说实现上比较麻烦,至今业界也没有找到一种完美的解决方案,Android程序员通常需要同时集成推送平台(如果有自己的端内推送,还要考虑与端内推送的配合);...
  • 全世界最坑的就是华为推送的SDK,不管你信信,反正,我是信了! 请注意,在确认照官方文档配置无误后,仍然收到onEvent回调的,请这里: 这里有两个Receiver(官方文档只有一个,另一个没有给名字,说什么...
  • 友盟推送在Android9.0以上弹出通知,在log中可以看到推送过来的信息 这条记录,只是为了帮助可能跟我集成时候遇到一样的问题的人,你们也可以留言告诉我解决方案 。 集成友盟推送在9.0以下都是正常的,在app离线...
  • 欢迎加入Unity业内qq交流群:956187480 qq扫描二维码加群   ...  自打接了这个项目到现在天天活在...需要推送消息,然后在后端大哥的帮助下梳理了一下推送的大致流程。之后我就在网上参考广大开发者的方案。  ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 295,903
精华内容 118,361
关键字:

多看不能推送了