个推_个推推送 - CSDN
  • DevStore收录于设计开发阶段的推送服务中包含了25个推送服务,如此多的选择,该如何选择适合项目的推送服务么?一起来看: 推送方案的公认评价采取4s标准: 1.Safe(安全) 2. Stable(稳定) 3.Save(省电省流量...

    推送服务:完成信息的推送功能,简言意骇。一个完整的App从想法的诞生到项目上线一般都会经历四个阶段:设计——开发——推广——运维。DevStore收录于设计开发阶段的推送服务中包含了25个推送服务,如此多的选择,该如何选择适合项目的推送服务么?一起来看:

    推送方案的公认评价采取4s标准:

    1.Safe(安全) 2. Stable(稳定) 3.Save(省电省流量省成本) 4.Slim(体积小)

    1.Safe (安全)

    推送方案应支持透传及各种加密方案,保障信息传递安全。

    推送方案的ID系统应该独立于已有的网站或服务的ID系统,这样保障用户在不同手机上登录后的信息投递准确性,避免因为取消绑定事件失败因网络传输而造成的信息误投送。

    2. Stable(稳定)

    稳定包括两个部分一个是服务器端的稳定性,一个是手机端的稳定性。

    服务端稳定性,因为使用长连接方案,对服务器的开销和要求很大,推送方案对服务器开发要求很高,海量线程连接下的服务器稳定性是非常具有挑战性的。

    一般的评判标准包括:

    - 同时在线时峰值 (一般按照百万并发连接时服务器稳定性评测)

    - 高并发时消息平均延迟时间(一般按照1分钟处理1百万条信息评测)

    - 服务稳定性 (一般要求全年99.9%以上可用,有备份,有负载均衡等)

    鉴于服务器稳定的开发难度很大,小团队不建议自己开发,建议使用稳定的第三方推送方案,如个推,友盟,极光,百度云推送等。  

    手机端的稳定性,主要是因为中国的复杂网络状况及手机型号适配情况造成手机长时间稳定联网较困难,所以稳定性非常重要,一般的评判标准包括:

    - 每日联网23.5小时以上用户比例 (表征联网稳定性)

    - 消息发送后9小时内收到率 (表征到达率)

    一般来说,推送方案要做网络的分运营商,分省,分机型适配,自己开发工作量较大。

    3.Save(节省)

    省电应注意CPU休眠,一般用服务缩短待机时间百分比评判。

    省流量应注意协议的修改和冗余数据包的处理,一般用空载待机月流量评判。

    省成本应考虑单服务器承载同时连接数,可承载同时连接数越多成本越低,业内顶尖水平为个推的单服务器300万连接。

    4.Slim(体积小)

    客户端推送服务SDK应该体积尽量小,不影响主程序的大小和复杂度,一般以小于或等于300K为宜。

    下边是关注度较高的推送服务参数对比:


    以上是关注度较高的四个推送服务的对比,分别是个推推送、百度云推送,极光推送,友盟推送。在基本参数的对比下,从支持平台,链路,耗流量等指标不同而受众也不同,

    可根据项目的需要选择合适的服务。更多的推送服务及推送类服务参数对比,集成过程等更多内容请猛戳这里>>>

    展开全文
  • 之前一直在使用极光推送,这次项目打算使用个推试试!个推个推官方文档集成失败原因:1、检查自己的APPID等信息2、检查AndroidManifest.xml<!-- 自定义权限 自定义权限解释:部分手机型号不能正常运行个推...

    之前一直在使用极光推送,这次项目打算使用个推试试!

    个推:个推官方文档

    集成失败原因:

    1、检查自己的APPID等信息

    2、检查自己的.jar和.so文件

    3、检查AndroidManifest.xml

    <!-- 自定义权限 自定义权限解释:部分手机型号不能正常运行个推SDK,需添加自定义权限进行配置。-->
    <uses-permission android:name="getui.permission.GetuiService.${applicationId}" />
    <permission
        android:name="getui.permission.GetuiService.${applicationId}"
        android:protectionLevel="normal" >
    </permission>

    关于Android Studio

    Android Studio是Google力推的Android开发环境,在IntelliJ IDEA基础上进行了大量功能完善和优化,包括:

    • 基于Gradle的构建支持
    • Android 专属的重构工具和Instant Run快速修复技术
    • 功能强大的布局编辑器,可以让你拖拉 UI 控件并进行效果预览
    • 全新的 Android 模拟器大约比之前的模拟器快 3 倍,同时由于 ADB 的增强,传输应用和数据到模拟器上的速度比到物理设备上快 10 倍。
    • 提供性能分析工具以捕获性能、可用性、版本兼容性等问题

    因此我们强烈推荐Android开发者将现有项目迁移到Android Studio环境,并在Android Studio下更快地实现个推SDK的集成工作。

    前言

    • 本文档介绍Android Studio提供的基于Maven的快速集成方案,配置简单、不容易出问题、后续更新维护方便,因此我们强烈推荐应用开发者根据本文档步骤进行个推集成。
    • 本文档适用SDK版本:2.9.5.0及以后
    • 请参考Getui_SDK_Demo_AS_mavenDemo工程

    1. 创建个推应用

    • 请登录 http://dev.getui.com ,选择登记应用并填写应用名称和包名信息,完成应用创建:
    • 点击应用配置,获取到相应的AppIDAppKeyAppSecret信息:

    2. 打开项目工程

    • 启动Android Studio, 打开您之前创建的Android项目工程:
    • 如果需要从原有的Eclipse项目导入,请选择Import project (Eclipse ADT, Gradle, etc.)

    3. 添加个推SDK及相关配置


    老版本升级到 2.9.5.0 及以上版本注意事项: 

    1. 替换旧的GetuiSDKxxx.jar,并删除GetuiExt-xxx.jar和所有jni相关目录下的libgetuiext.so
    2. 删除AndroidManifest.xml中以下组件相关的配置,最新的SDK已经不再需要这些组件:

      com.igexin.sdk.PushServiceUser

      com.igexin.sdk.PushManagerReceiver

      com.igexin.getuiext.activity.GetuiExtActivity

      com.igexin.getuiext.service.PayloadReceiver

      com.igexin.getuiext.service.GetuiExtService
    3. 删除app/src/main/res/layout目录下原来旧的布局文件,包括getui_notification.xmlnotification_inc.xmlincrement_popup_dialog.xml,请使用最新SDK所提供的getui_notification.xml即可
    4. 请参考本文档重新进行配置集成
       

    3.1 个推Android SDK资料包结构

    GETUI_ANDROID_SDK/
      |- readme.txt (SDK资料包说明)
      |- 接入文档/ (Android SDK相关集成文档PDF版本)
      |- 资源文件/
      |    |- res/
      |    |    |- layout/
      |    |    |    |- getui_notification.xml (个推SDK所需的布局文件)
      |    |    |- raw
      |    |    |    |- keep.xml (用于资源保留的描述文件)
      |    |- so/ (各 CPU 架构so库)
      |    |   |- arm64-v8a/
      |    |   |- armeabi/
      |    |   |- armeabi-v7a/
      |    |   |- mips/
      |    |   |- mips64/
      |    |   |- x86/
      |    |   |- x86_64/
      |    |- GetuiSDK2.11.1.0.jar
      |    |- android-support-v4.jar
      | - Demo工程/
      |    |- Getui_SDK_Demo_AS_maven/ (AndroidStudio快速集成Demo工程)
      |    |- Getui_SDK_Demo_AS_official/ (AndroidStudio标准集成Demo工程)
      |    |- Getui_SDK_Demo_Eclipse_official/ (Eclipse集成Demo工程)
    复制

    3.2 添加Maven库地址

    尽管我们会将最新的个推SDK同步部署在JCenter上,但是为了保障稳定使用,我们建议开发者额外配置个推提供的maven库从而实现更快速的访问。

    • 在以项目名为命名的顶层build.gradle文件中,添加个推maven库地址,如下所示:
    //Maven URL地址
    maven {
        url "http://mvn.gt.igexin.com/nexus/content/repositories/releases/"
    }
    复制

    3.3 配置依赖

    • app/build.gradle文件中引用个推SDK依赖库,如下图所示:

     

    dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
        compile 'com.getui:sdk:2.11.1.0'
        compile 'com.android.support:support-v4:+'
    }
    复制

    3.4 配置 so 库

    目前个推SDK支持armeabiarmeabi-v7aarm64-v8amipsmips64x86x86_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_IDAPP_KEYAPP_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:
    <service
      android:name="com.getui.demo.DemoPushService"
      android:exported="true"
      android:label="PushService"
      android:process=":pushservice">
    </service>
    复制

    3.7 配置可选权限

    • 上述接入方式已包含个推服务所需的所有必备权限。在此之外,您还可以配置以下可选权限,以便使用个推3.0提供的电子围栏功能。请在AndroidManifest.xml<manifest>根标签下添加如下配置:
    <!-- iBeancon功能所需权限 -->;
    <uses-permission android:name="android.permission.BLUETOOTH"/>
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
    <!-- 个推3.0电子围栏功能所需权限 -->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    复制

    3.8 导入通知栏图标

    • 为了修改默认的通知图标以及通知栏顶部提示小图标,请在资源目录的res/drawable-ldpi/res/drawable-mdpi/res/drawable-hdpi/res/drawable-xhdpi/res/drawable-xxhdpi/等各分辨率目录下,放置相应尺寸的文件名为push.pngpush_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.gradleandroid.buildTypes.release下配置了shrinkResources true,为了避免个推SDK所需资源被错误精简导致功能异常,需要在项目资源目录res/raw中添加keep.xml文件,路径如下:

    • 在SDK资料包中GETUI_ANDROID_SDK/资源文件/raw目录下有keep.xml示例文件,完整内容如下:
    <?xml version="1.0" encoding="utf-8"?>
    <resources
        xmlns:tools="http://schemas.android.com/tools"
        tools:keep="@layout/getui_notification,
        @drawable/push,
        @drawable/push_small"/>
        <!-- 若您需要使用其他自定义推送图标,也需要在此处添加 -->
    复制
    • 如果你的项目工程已经使用了keep.xml,则只需在tools:keep中增加对@layout/getui_notification的声明,例如:
    <?xml version="1.0" encoding="utf-8"?>
    <resources
        xmlns:tools="http://schemas.android.com/tools"
        tools:keep="@layout/other_res,...,
        @layout/getui_notification,
        @drawable/push,
        @drawable/push_small"/>
       <!-- 若您需要使用其他自定义推送图标,也需要在此处添加 -->
    复制
    • 如果您的工程使用了AndResGuard进行资源精简,为了避免个推SDK所需资源被错误精简导致功能异常,需要为个推添加白名单配置。

    gradle集成AndResGuard的方式,需要您在andResGuardwhiteList节点下添加如下代码:

    andResGuard {
        ...
        whiteList = [
               ...
               // for getui
               "R.drawable.push",        
               "R.drawable.push_small",
               "R.layout.getui_notification",
               "R.id.getui_*"
               // 若您需要使用其他自定义推送图标,也需要在此处添加
        ]
        ...
    }
    复制

    命令行使用AndResGuard的方式,需要您在config.xml文件中的<issue id=whitelist>节点下添加如下代码

    <issue id="whitelist" isactive="true">
        <path value="<your_package_name>.R.drawable.push"/>
        <path value="<your_package_name>.R.drawable.push_small"/>
        <path value="<your_package_name>.R.layout.getui_notification"/>
        <path value="<your_package_name>.R.id.getui_*"/>
        <!-- 若您需要使用其他自定义推送图标,也需要在此处添加 -->
    </issue>
    复制

    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获取通知、透传消息通知等)

    • 在项目源码中添加一个继承自com.igexin.sdk.GTIntentService的类,用于接收CID、透传消息以及其他推送服务事件。请参考下列代码实现各个事件回调方法:
    package com.getui.demo;
    
    import android.content.Context;
    import android.os.Message;
    import android.util.Log;
    
    import com.igexin.sdk.GTIntentService;
    import com.igexin.sdk.PushConsts;
    import com.igexin.sdk.PushManager;
    import com.igexin.sdk.message.FeedbackCmdMessage;
    import com.igexin.sdk.message.GTCmdMessage;
    import com.igexin.sdk.message.GTTransmitMessage;
    import com.igexin.sdk.message.SetTagCmdMessage;
    
    /**
     * 继承 GTIntentService 接收来自个推的消息, 所有消息在线程中回调, 如果注册了该服务, 则务必要在 AndroidManifest中声明, 否则无法接受消息<br>
     * onReceiveMessageData 处理透传消息<br>
     * onReceiveClientId 接收 cid <br>
     * onReceiveOnlineState cid 离线上线通知 <br>
     * onReceiveCommandResult 各种事件处理回执 <br>
     */
    public class DemoIntentService extends GTIntentService {
    
        public DemoIntentService() {
    
        }
    
        @Override
        public void onReceiveServicePid(Context context, int pid) {
        }
    
        @Override
        public void onReceiveMessageData(Context context, GTTransmitMessage msg) {
        }
    
        @Override
        public void onReceiveClientId(Context context, String clientid) {
            Log.e(TAG, "onReceiveClientId -> " + "clientid = " + clientid);
        }
    
        @Override
        public void onReceiveOnlineState(Context context, boolean online) {
        }
    
        @Override
        public void onReceiveCommandResult(Context context, GTCmdMessage cmdMessage) {
        }
    }
    复制
    • AndroidManifest.xml中配置上述 IntentService 类:
    <service android:name="com.getui.demo.DemoIntentService"/>
    复制
    • 在个推SDK初始化后,注册上述 IntentService 类:
    // com.getui.demo.DemoIntentService 为第三方自定义的推送服务事件接收类
    PushManager.getInstance().registerPushIntentService(this.getApplicationContext(), com.getui.demo.DemoIntentService.class);
    复制


    关于原有广播方式和新的IntentService方式兼容性说明:

    1. 如果调用了registerPushIntentService方法注册自定义IntentService,则SDK仅通过IntentService回调推送服务事件;
    2. 如果未调用registerPushIntentService方法进行注册,则原有的广播接收器仍然可以继续使用。

    5. 测试

    • 连接手机或启动Android模拟器,编译运行你的工程,查看logcat信息。在搜索框中输入clientid,如果能显示clientid is xxx日志,则说明个推SDK已经成功运行起来了:
    • 登录 个推开发者平台,进入【个推·消息推送】产品,点击【创建推送】,进入待测试应用的推送通知界面:
    • 依次填写通知标题通知内容,点击发送按钮即可向该推送应用名下所有CID推送通知消息。具体推送操作方法详见:创建推送通知

    • 如果手机或模拟器收到消息,显示下图所示通知,那么恭喜您,个推SDK接入测试已经成功完成!

     

     

     

     

    展开全文
  • 个推实例详解-java

    2017-06-02 16:39:24
    个推官网直接推送 1,在个推官网注册个账号 注册地址:https://dev.getui.com/dos4.0/index.html#register 注册完进入配置页面,对应用进行配置,框中的几个地方接下来要用到,应用名称一定要跟开发的应用名称一致 ...
    
    

    个推官网直接推送

    1,在个推官网注册个账号

    注册地址:https://dev.getui.com/dos4.0/index.html#register

    注册完进入配置页面,对应用进行配置,框中的几个地方接下来要用到,应用名称一定要跟开发的应用名称一致

    图1

    2,添加个推模块权限,如图

    图2

    3,图1中的几个值记录下来,manifest的配置文件中对应填写,如下图:

    图3

     

    4,图3和本步骤是重复的,直接在这里填写也行

                                图4

    5,接下来我们就可以推送消息了,打包apk,在手机端运行起来先,然后我们回到个推网站,会发现,在线用户人数变为1,这就说明个推和我们手机端已经连接成功了,可以进行消息推送了。

    6,直接用个推网站尝试推送消息

    7,消息发送完我们在手机端的状态栏就会收到如下消息

    至此说明我们的个推顺利进行完毕



    下面是用java后台定时任务的方式推送消息

    1,添加必须的jar包

    我是用maven管理的,maven的pom文件添加

        <!-- 个推消息 -->

        <repositories>

            <repository>

                <id>getui-nexus</id>

                <url>http://mvn.gt.igexin.com/nexus/content/repositories/releases/</url>

            </repository>

        </repositories>

     

            <!-- 个推消息 -->

            <dependency>

                <groupId>com.gexin.platform</groupId>

                <artifactId>gexin-rp-sdk-http</artifactId>

                <version>4.0.1.2</version>

            </dependency>

    结构如图

     但是还是会少template这个包,需要手动加到项目中

     2,方法调用

    以下是针对单个客户端发送消息,如果要给多个客户端发送,也只需要多次调用pushMsg方法即可

        /**

         * @param clientId

         *            客户端唯一标识

         * @param taskNum

         *            任务数量

         * @return

         */

        public boolean pushMsg(String clientId) {

            try {

                IGtPush push = new IGtPush(sysConfig.getAppKey(), sysConfig.getMasterSecret(), true);//建立通知类

                // 定义"点击链接打开通知模板",并设置标题、内容、链接

                TransmissionTemplate template = new TransmissionTemplate();

                template.setAppId(sysConfig.getAppId());

                template.setAppkey(sysConfig.getAppKey());

                template.setTransmissionContent("{title:\"任务提醒\",content:\"您有" + 1 + "条未处理的任务请及时处理!\",payload:\"通知去干嘛这里可以自定义\"}");

                template.setTransmissionType(2);

                //创建单个通知消息

                SingleMessage singleMessage = new SingleMessage();

                singleMessage.setOffline(true);

                // 离线有效时间,单位为毫秒,可选

                singleMessage.setOfflineExpireTime(24 * 3600 * 1000);

                singleMessage.setData(template);

                // 可选,1为wifi,0为不限制网络环境。根据手机处于的网络情况,决定是否下发

                singleMessage.setPushNetWorkType(0);

                //用户端

                Target target = new Target();

                target.setAppId(sysConfig.getAppId());

                target.setClientId(clientId);

                IPushResult ret = null;

                try {

                    ret = push.pushMessageToSingle(singleMessagetarget);

                } catch (RequestException e) {

                    e.printStackTrace();

                    ret = push.pushMessageToSingle(singleMessagetargete.getRequestId());

                }

                if (ret != null && isPushSuccess(ret)) {

                    logger.info("推送信息成功");

                    logger.info("推送信息返回结果:" + JSON.toJSONString(ret));

                    return true;

                } else {

                    logger.info("推送信息服务器响应异常");

                    logger.info("推送信息返回结果:" + JSON.toJSONString(ret));

                    return false;

                }

            } catch (Exception e) {

                e.printStackTrace();

                return false;

            }

        }

        

        /**

         * 判断是否推送成功

         * @param result

         * @return

         */

        private boolean isPushSuccess(IPushResult result) {

            if (result.getResponse() != null && result.getResponse().get("result").toString().equals("ok")) {

                return true;

            }

            return false;

        }

     

     

     

     

     

     

     

     

     

     

    展开全文
  • 个推

    2019-03-04 11:49:08
    首先我们先在个推网页上创建一个应用 这个一定要和你的项目包名一致 这个CID需要在你项目里获取,下面我们走进代码中 首先在Android Studio配置 在清单文件中添加权限 &lt;!-- iBeancon功能所...

    首先我们先在个推网页上创建一个应用

     

    这个一定要和你的项目包名一致

    这个CID需要在你项目里获取,下面我们走进代码中

     

     

    首先在Android Studio配置

    在清单文件中添加权限

         <!-- iBeancon功能所需权限 -->;
        <uses-permission android:name="android.permission.BLUETOOTH"/>
        <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
        <!-- 个推3.0电子围栏功能所需权限 -->
        <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
        <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>

    在里层的build.gradle里添加

    依赖   implementation 'com.getui:sdk:2.13.0.0'
     manifestPlaceholders = [
                    GETUI_APP_ID : "HOmGrlLgEi9RfVLqhjz527",
                    GETUI_APP_KEY : "SN65gUBsvAAsHn6r1WnbR3",
                    GETUI_APP_SECRET : "6jEm3bjYli9UHXTysQEnP3"
            ]
            ndk {
                abiFilters "armeabi", "armeabi-v7a", "x86_64"
            }
    以下的需要在个推上获取
    GETUI_APP_ID : "HOmGrlLgEi9RfVLqhjz527",  
    GETUI_APP_KEY : "SN65gUBsvAAsHn6r1WnbR3",
    GETUI_APP_SECRET :"6jEm3bjYli9UHXTysQEnP3"

    点进去就会看到 GETUI_APP_ID : GETUI_APP_KEY : GETUI_APP_SECRET :  相对应的值


     

    在外层的build.gradle里添加

        maven {
                url "http://mvn.gt.igexin.com/nexus/content/repositories/releases/"
            }

    在创建一个类来继承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();
        }
    在创建一个类继承GTIntentService,重写方法
     @Override
        public void onReceiveServicePid(Context context, int i) {
    
        }
    
        @Override
        public void onReceiveClientId(Context context, String s) {
            Log.i("xxxxx",s);
    
        }
    
        @Override
        public void onReceiveMessageData(Context context, GTTransmitMessage gtTransmitMessage) {
    
        }
    
        @Override
        public void onReceiveOnlineState(Context context, boolean b) {
    
        }
    
        @Override
        public void onReceiveCommandResult(Context context, GTCmdMessage gtCmdMessage) {
    
        }

    最主要的方法就是onReceiveClientId方法,打印出CID值,最后再你需要实现的地方写上一下俩个方法再清单文件中注册下就可以了

       <service
                android:name="这里写自己的类名"
                android:exported="true"
                android:label="PushService"
                android:process=":pushservice">
            </service>
            <service android:name="这里写自己的类名"/>
     // com.getui.demo.DemoPushService 为第三方自定义推送服务
     PushManager.getInstance().initialize(this.getApplicationContext(),  自己的类名.class);
    // com.getui.demo.DemoIntentService 为第三方自定义的推送服务事件接收类
    PushManager.getInstance().registerPushIntentService(this.getApplicationContext(), 自己的类名.class);
    
     

     

    展开全文
  • 个推App消息推送

    2017-09-07 10:31:33
    个推 消息推送的研究经历 注意:登记时的应用标识就是appid. 应用登记成功之后会得到APPID,APPSecret,APPkey,MasterSecret 接着就需要配置sdk了,把得到的数值填入相对应的名字里面就可以了 这些做完...

    首先到个推官网注册一个账号,然后点击“个推消息推送",把需要推送的app进行登记



    注意:登记时的应用标识就是appid.

    应用登记成功之后会得到APPID,APPSecret,APPkey,MasterSecret



    接着就需要配置sdk了,把得到的数值填入相对应的名字里面就可以了


    这些做完之后然后就是代码了



         static String host = "http://sdk.open.api.igexin.com/apiex.htm";
       
        public void PushAppMember(String cid,String appId,String appKey,String masterSecret,String title,String content){
            IGtPush push = new IGtPush(host, appKey, masterSecret);
    //        LinkTemplate template = linkTemplateDemo(appId,appKey,title,content);
            try {         
                //单推消息类型   
                SingleMessage message = new SingleMessage();  
                                     
                NotificationTemplate template=notificationTemplateDemo(appId,appKey,title,content);
                message.setData(template);  
                message.setOffline(true);                   //用户当前不在线时,是否离线存储,可选  
                message.setOfflineExpireTime(72 * 3600 * 1000); //离线有效时间,单位为毫秒,可选  
                message.setPushNetWorkType(0);
                
                Target target1 = new Target();  
                target1.setAppId(appId);  
                target1.setClientId(cid);  
     
                //单推  
                IPushResult ret = push.pushMessageToSingle(message, target1);  
                              
                System.out.println(ret.getResponse().toString());  
            } catch (Exception e) {  
                e.printStackTrace();  
            }
        }

        public static NotificationTemplate notificationTemplateDemo(String appId,String appKey,String title,String content) {
            NotificationTemplate template = new NotificationTemplate();
            // 设置APPID与APPKEY
            template.setAppId(appId);
            template.setAppkey(appKey);
            // 设置通知栏标题与内容
            template.setTitle(title);
            template.setText(content);
            // 配置通知栏图标
            template.setLogo("icon.png");
            // 配置通知栏网络图标
            template.setLogoUrl("");
            // 设置通知是否响铃,震动,或者可清除
            template.setIsRing(true);
            template.setIsVibrate(true);
            template.setIsClearable(true);
            // 透传消息设置,1为强制启动应用,客户端接收到消息后就会立即启动应用;2为等待应用启动
            template.setTransmissionType(1);
            template.setTransmissionContent("请输入您要透传的内容");
            // 设置定时展示时间
            // template.setDuration("2015-01-16 11:40:00", "2015-01-16 12:24:00");
            return template;
        }

       注意:得到cid的方法与个推的api文档略有不同,在服务器上建一个关于cid(别名)的表,查出来要发送对方的cid,然后提交方法的时候当成参数传送过来。

      ok,以后就是个推消息推送 的经历。


    展开全文
  • 个推初体验

    2018-09-21 15:40:24
    个推号称3分钟让用户无缝介入,然后在我实际对个推精简版介入的耗时确实没有3分钟,各种666的,but在最后调试的出现了问题,能接受到数据,但是通知栏就是弹不出来,老衲十分的困惑,于是对比了官方demo和自己apk的...
  • 10月16日,OSC源创会走进重庆,不见不散!>>> »  概述 PUSH是互联网上内容提供者和内容定制方之间的一种通信机制,利用在服务器端的程序把数据源源不断地推向客户端,大大提高客户机和服务器之间的交互性能。...
  • 个推使用指南

    2018-09-28 11:04:43
    按照个推文档CocoaPods集成,基本能实现个推的基本推送功能。但是很多细节文档没有说,我就走了很多弯路。 首先登录个推网站。在个推·消息推送登记应用。 要登记测试环境和生产环境两个应用。 点击应用...
  • 关于个推的理解

    2014-09-02 13:30:07
    首先要强调的一点是,假如
  •  在移动互联网以前的手机,如果有事情发生要通知用户,则会弹出一窗口,告诉用户正在发生的事,可能是未接电话提示、日历提醒或是一封彩信。送功能最早是被用于Email中,而目前更多地被应用于App中。   2、...
  • 网上看了几篇教程都是比较老的版本了,根据前人的智慧,然后自己摸索了下,简单几步实现了在手机上推送自定义的消息。 ... ... ...或者查看应用的标识一定要和下面的标识对应起来,这样才能接收到信息。...
  • 利用MUI+个推实现APP消息推送从2015年7月开始使用MUI进行APP的开发,到现在已经有一个年头了。而以前做过的东西都没有整理过,以后会将自己遇到的坑整理下来。 这篇主要是讲利用MUI和集成的个推来实现APP的消息推送...
  • iOS集成个推推送

    2017-07-03 13:34:20
    前段时间由于项目需要,要使用个推进行推送,由于以前主要接触的是极光推送,所以集成过程中出现了很多问题,以防以后再次出现同样的问题,特意记录一下,也希望能帮到需要的人。 首先看一下个推官网提供的推送流程...
  • 为了节约开发成本,目前主流的提供第三方推送服务的有:极光推送、个推、友盟、小米推送、百度推送。本文将整合小米、个推、jpush推送,从而提高app推送的到达率。实践发现,由于android系统的差异性,在android单独...
  • 为了更好地服务开发者,此次我们针对个推Android推送使用中可能出现的一些常见问题做了整理,提供了一些比较方便掌握的解决方法,希望能帮助到大家。 1. Android推送和iOS推送调用模板的区别? Android调用推送模板...
  • IOS使用个推前台可以收到推送消息后台收不到,配置不做过多说明,请查看官方文档。主要在这里记录我遇到的两个大坑。 1,根据个推的文档进行配置 2,保证证书环境正确 3,查看个推常见问题页关于后台不能...
  • 项目之前使用的信鸽推送,觉得不怎么好用,就在闲下来的时候换成了个推个推的文档还是比较详细的,简单的推送只要看下文档就OK了。透传个推有个透传的功能,使用这个功能进行推送的时候,如果APP在前台运行时,是...
  • 推送:分全局推送和个推; 个推是自动推送,而不需要人工干预,比如收到新的买家订单;根据买家订单, 服务端推送新订单消息到商户的手机上! 我们项目中的自定义消息类型: 订单消息、报价消息、新版本更新消息等等。...
  • IOS 个推推送总结

    2016-09-08 13:16:37
    1.创建个推开发者帐号 创建个推开发者帐号,请访问个推开发者平台(dev.getui.com),点击注册进行开发者账号注册。 2.登记新应用 创建好账号进入个推开发者平台,首页展示的是如下界面,点击左上角“登记应用”...
  • 最近使用集成个推服务写服务器后台,起初调用使用都没问题,最后却出现个推初始化时参数实例出错的问题,经排查是因为个推服务使用了log4net.dll文件,本人项目在那个也有那个dll,只不过和个推使用的版本不同,所以...
1 2 3 4 5 ... 20
收藏数 824,357
精华内容 329,742
关键字:

个推