精华内容
参与话题
问答
  • 百度云推送

    2019-06-24 01:14:43
    百度云推送流程图: 百度云推送服务支持三种推送类型:通知、消息及富媒体;支持向所有用户、根据标签分类向特定用户群体、向单个用户和基于地理位置推送消息;支持更多自定义功能(如自定义内容、后续行为、...

    百度云推送流程图:

         

          百度云推送服务支持三种推送类型:通知、消息及富媒体;支持向所有用户、根据标签分类向特定用户群体、向单个用户和基于地理位置推送消息;支持更多自定义功能(如自定义内容、后续行为、样式模板等);提供用户信息及通知消息统计信息,方便开发者进行后续开发及运营。

         消息:目前仅支持Android平台。应用内推消息,不会有界面的提示。

         通知:会有标题、内容,界面提示。

          名称解释:

    • API Key : 应用标识,终端上的绑定和服务端推送消息时都要用到。
    • Secret Key : 应用私钥,服务端推送消息时用到。
    • app id : 应用ID,就是百度开发者中心的应用基本信息中的应用ID。客户端绑定调用返回值中可获得。
    • channel id : 推送通道ID,通常指一个终端,如一台android系统手机。客户端绑定调用返回值中可获得。
    • user id : 应用的用户ID,一个应用在多个端,可以都属于同一用户(即对应一个userid)。user id和channel id配合可以唯一指定一个应用的特定终端。如果应用不是基于百度账户的账户体系,单独用user就通常指定了一个应用的特定终端。客户端绑定调用返回值中可获得。

        流程梳理:

        首先:由(android、IOS)客户端调用百度云SDK, 做一个用户平台的关系绑定。

                 比如以Android平台为例:Android客户端,在调用了startWork之后,自定义消息 receiver将会收到返回值,其中包含了{channel id、user id} 等信息。

        然后:根绝需求,做消息、通知的广播或者是单播的推送(也就是所谓的,向 所有人推送通知 或者 根据标签定制推送给指定用户)。

     

    百度云推送,遇到的一些

    对于 {"request_id":3099155779,"error_code":30603,"error_msg":"authentication failed. "} ,的,排查解决方案

    1:标题或内容中,包含特殊字符,如("!")

    2:标题或内容中,包含空格

    3:标题或内容中,包含中文的编码

    ===================切换wifi网络,收不到推送消息====================================================

     push_help  15:31:41
         绑定关系不会因为切换网络或长连接断开,而解绑的
    新空气  15:32:15
        不知道为什么,我们有时候,切换wifi网络,就有时候收不到了。
        无法解释这是什么现象。
    push_help  15:42:39
        你是指切换为wifi推送消息,无法接收成功,3G下却可以
        以前遇到过有的公司在wifi情况下,做了端口限制
    push_help  15:45:13
    再遇到切换网络导致不能成功接收时,可以通过以下三步进行确认:
     1、查看 push service进程是否存在
        $ adb shell ps |grep bdservice_v1
        运行上条命令后如有以下进程显示,则表明push service进程存在。
        u0_a147 10820 181 897480 45648 ffffffff 00000000 S com.baidu.appsearch:bdservice_v1
    2、查看长链接是否正常
       $ adb shell netstat |grep 5287
       运行上条命令后如有以下显示,则表明push service长链接正常。
      tcp 0 0 172.22.123.106:58204 61.135.185.18:5287 ESTABLISHED
    3、若push service 进程不在,则查看Push Alarm 是否存在
       $ adb shell dumpsys alarm |grep pushservice
       运行上条命令后如有以下显示,则表明Alarm还在,等待10分钟左右再看push service是否起来 
       如果这三项都是正常的,麻烦联系我们说明下具体情况。 

    =======================================================================

     

     

                

    百度云推送:

    http://developer.baidu.com/console#push/setup!appid=2302030

    http://developer.baidu.com/wiki/index.php?title=docs/cplat/push/api/list

    C#  SDK       : https://github.com/JiyongShi/Baidu.SDK.Push

    云推送后台:http://developer.baidu.com/console#push/list!msgtype=6&appid=2302030&pn=1

    微信多客服服务指南:http://www.wxuse.com/thread-10067-1-1.html

    转载于:https://www.cnblogs.com/Kummy/p/3731453.html

    展开全文
  • 百度云推送API---Android推送Demo

    千次阅读 2018-07-13 14:54:16
    虽然还没有搞懂文件上传、下载、删除的问题,先来学习一波下一次迭代可能会用到的百度云推送API使用方式。测试截图开发准备1:登陆百度云账号,注册成为开发者账号2:创建一个应用用于测试依次需要填写的信息有:...

    虽然还没有搞懂文件上传、下载、删除的问题,先来学习一波下一次迭代可能会用到的百度云推送API使用方式。

    测试截图

    开发准备

    1:登陆百度云账号,注册成为开发者账号

    2:创建一个应用用于测试

    依次需要填写的信息有:应用名称、应用包名、适配的机器(安卓或者ios)

    Tips:应用包名将会是你接下来创建工程文件时,所在的包的包名称。如果你不这样做的话,可能会报错30608。

    3:进入应用

    点击“创建推送”,可以使用控制台进行推送;

    点击“应用配置”,可以看到开发时所必须的一些信息:

    APP KEY、SECRECT KEY会是开发的过程中所需要的,这很重要,SECRET KEY不对的话,会报错提示你权限认证不对,这个值后期据说是可以联系百度云进行修改的,目前还没有尝试过。

    4:下载手机端apk以获取手机的Channel ID

    百度云有提供pushDemo给我们,下载,安装就可以了的

    点击绑定后,你可以获取到这个机子的Channel ID。

    5:实际开发

    下载你需要的服务端sdk包,解压,可以发现有以下文件:

    这些圈出来的文件是会用到的,我下载的是Java版本的

    先去继续些代码,晚上再继续记录~

    展开全文
  • Android百度云推送实现消息推送

    千次阅读 2015-12-08 19:56:04
    1.首先在百度云推送网站上下载Android SDK(客户端)和Java SDK(服务端) 2.根据开发文档配置Android客户端 (1)在百度云推送页面创建应用,创建成功之后会生成API_KEY http://push.baidu.com/doc/guide/join ...

    百度云推送:http://push.baidu.com/

    Android 开发文档:http://push.baidu.com/doc/android/api

    Java 服务端开发文档:http://push.baidu.com/doc/java/api

    SDK下载:http://push.baidu.com/sdk/push_client_sdk_for_android


    1.首先在百度云推送网站上下载Android SDK(客户端)和Java SDK(服务端)


    2.根据开发文档配置Android客户端

    (1)在百度云推送页面创建应用,创建成功之后会生成API_KEY

    http://push.baidu.com/doc/guide/join


    (2)将解压后的Android SDK中的libs文件夹拷贝到自己项目中

    (3)修改AndroidManifest.xml文件,添加以下内容

    添加权限:

      <!-- Push service 运行需要的权限 -->
        <uses-permission android:name="android.permission.INTERNET" />
        <uses-permission android:name="android.permission.READ_PHONE_STATE" />
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
        <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
        <uses-permission android:name="android.permission.WRITE_SETTINGS" />
        <uses-permission android:name="android.permission.VIBRATE" />
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
        <uses-permission android:name="android.permission.ACCESS_DOWNLOAD_MANAGER" />
        <uses-permission android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION" />
        <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
        <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
        <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
        <uses-permission android:name="android.permission.EXPAND_STATUS_BAR" />
    在application中添加push service

    <!-- push service start -->
    <!-- 用于接收系统消息以保证PushService正常运行 -->
    <receiver android:name="com.baidu.android.pushservice.PushServiceReceiver"
        android:process=":bdservice_v1" >
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
            <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
            <action android:name="com.baidu.android.pushservice.action.notification.SHOW" />
            <action android:name="com.baidu.android.pushservice.action.media.CLICK" />
            <!-- 以下四项为可选的action声明,可大大提高service存活率和消息到达速度 -->
            <action android:name="android.intent.action.MEDIA_MOUNTED" />
            <action android:name="android.intent.action.USER_PRESENT" />
            <action android:name="android.intent.action.ACTION_POWER_CONNECTED" />
            <action android:name="android.intent.action.ACTION_POWER_DISCONNECTED" />
        </intent-filter>
    </receiver>
    <!-- Push服务接收客户端发送的各种请求-->
    <receiver android:name="com.baidu.android.pushservice.RegistrationReceiver"
        android:process=":bdservice_v1" >
        <intent-filter>
            <action android:name="com.baidu.android.pushservice.action.METHOD" />
            <action android:name="com.baidu.android.pushservice.action.BIND_SYNC" />
        </intent-filter>
        <intent-filter>
            <action android:name="android.intent.action.PACKAGE_REMOVED" />
            <data android:scheme="package" />
        </intent-filter>                   
    </receiver>
    <service android:name="com.baidu.android.pushservice.PushService" android:exported="true" 
        android:process=":bdservice_v1" >
        <intent-filter >
                <action android:name="com.baidu.android.pushservice.action.PUSH_SERVICE" />
        </intent-filter>
    </service>
    <!-- 4.4版本新增的CommandService声明,提升小米和魅族手机上的实际推送到达率 -->
    <service android:name="com.baidu.android.pushservice.CommandService"
        android:exported="true" />
    <!-- push结束 -->

    (4)在MainActivity中添加以下代码

    @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main_activity);
            /*最后一个参数为api_key,将自己创建的应用生成的api-key复制过来*/
            PushManager.startWork(getApplicationContext(),PushConstants.LOGIN_TYPE_API_KEY,"3bDa94fqBVGQ20gReLvZWbAZ");
          
        }
    


    (5)创建PushTestReceiver类,继承PushMessageReceiver,并在AndroidManifest文件中注册

    /*
     * Push消息处理receiver。请编写您需要的回调函数, 一般来说: onBind是必须的,用来处理startWork返回值;
     *onMessage用来接收透传消息; onSetTags、onDelTags、onListTags是tag相关操作的回调;
     *onNotificationClicked在通知被点击时回调; onUnbind是stopWork接口的返回值回调
    
     * 返回值中的errorCode,解释如下:
     *0 - Success
     *10001 - Network Problem
     *10101  Integrate Check Error
     *30600 - Internal Server Error
     *30601 - Method Not Allowed
     *30602 - Request Params Not Valid
     *30603 - Authentication Failed
     *30604 - Quota Use Up Payment Required
     *30605 -Data Required Not Found
     *30606 - Request Time Expires Timeout
     *30607 - Channel Token Timeout
     *30608 - Bind Relation Not Found
     *30609 - Bind Number Too Many
    
     * 当您遇到以上返回错误时,如果解释不了您的问题,请用同一请求的返回值requestId和errorCode联系我们追查问题。
     *
     */
    
    public class PushTestReceiver extends PushMessageReceiver {
        /** TAG to Log */
        public static final String TAG = PushTestReceiver.class
                .getSimpleName();
    
        /**
         * 调用PushManager.startWork后,sdk将对push
         * server发起绑定请求,这个过程是异步的。绑定请求的结果通过onBind返回。 如果您需要用单播推送,需要把这里获取的channel
         * id和user id上传到应用server中,再调用server接口用channel id和user id给单个手机或者用户推送。
         *
         * @param context
         *            BroadcastReceiver的执行Context
         * @param errorCode
         *            绑定接口返回值,0 - 成功
         * @param appid
         *            应用id。errorCode非0时为null
         * @param userId
         *            应用user id。errorCode非0时为null
         * @param channelId
         *            应用channel id。errorCode非0时为null
         * @param requestId
         *            向服务端发起的请求id。在追查问题时有用;
         * @return none
         */
        @Override
        public void onBind(Context context, int errorCode, String appid,
                String userId, String channelId, String requestId) {
            String responseString = "onBind errorCode=" + errorCode + " appid="
                    + appid + " userId=" + userId + " channelId=" + channelId
                    + " requestId=" + requestId;
            Log.d(TAG, responseString);
        }
    
        /**
         * 接收透传消息的函数。
         *
         * @param context
         *            上下文
         * @param message
         *            推送的消息
         * @param customContentString
         *            自定义内容,为空或者json字符串
         */
        @Override
        public void onMessage(Context context, String message,
                String customContentString) {
            String messageString = "透传消息 message=\"" + message
                    + "\" customContentString=" + customContentString;
            Log.d(TAG, messageString);
    
           
        }
    
        /**
         * 接收通知点击的函数。
         *
         * @param context
         *            上下文
         * @param title
         *            推送的通知的标题
         * @param description
         *            推送的通知的描述
         * @param customContentString
         *            自定义内容,为空或者json字符串
         */
        @Override
        public void onNotificationClicked(Context context, String title,
                String description, String customContentString) {
            String notifyString = "通知点击 title=\"" + title + "\" description=\""
                    + description + "\" customContent=" + customContentString;
            Log.d(TAG, notifyString);
    
        
        }
    
        /**
         * 接收通知到达的函数。
         *
         * @param context
         *            上下文
         * @param title
         *            推送的通知的标题
         * @param description
         *            推送的通知的描述
         * @param customContentString
         *            自定义内容,为空或者json字符串
         */
    
        @Override
        public void onNotificationArrived(Context context, String title,
                String description, String customContentString) {
    
            String notifyString = "onNotificationArrived  title=\"" + title
                    + "\" description=\"" + description + "\" customContent="
                    + customContentString;
            Log.d(TAG, notifyString);
    
         
        }
    
        /**
         * setTags() 的回调函数。
         *
         * @param context
         *            上下文
         * @param errorCode
         *            错误码。0表示某些tag已经设置成功;非0表示所有tag的设置均失败。
         * @param successTags
         *            设置成功的tag
         * @param failTags
         *            设置失败的tag
         * @param requestId
         *            分配给对云推送的请求的id
         */
        @Override
        public void onSetTags(Context context, int errorCode,
                List<String> sucessTags, List<String> failTags, String requestId) {
            String responseString = "onSetTags errorCode=" + errorCode
                    + " sucessTags=" + sucessTags + " failTags=" + failTags
                    + " requestId=" + requestId;
            Log.d(TAG, responseString);
    
        }
    
        /**
         * delTags() 的回调函数。
         *
         * @param context
         *            上下文
         * @param errorCode
         *            错误码。0表示某些tag已经删除成功;非0表示所有tag均删除失败。
         * @param successTags
         *            成功删除的tag
         * @param failTags
         *            删除失败的tag
         * @param requestId
         *            分配给对云推送的请求的id
         */
        @Override
        public void onDelTags(Context context, int errorCode,
                List<String> sucessTags, List<String> failTags, String requestId) {
            String responseString = "onDelTags errorCode=" + errorCode
                    + " sucessTags=" + sucessTags + " failTags=" + failTags
                    + " requestId=" + requestId;
            Log.d(TAG, responseString);
    
          
        }
    
        /**
         * listTags() 的回调函数。
         *
         * @param context
         *            上下文
         * @param errorCode
         *            错误码。0表示列举tag成功;非0表示失败。
         * @param tags
         *            当前应用设置的所有tag。
         * @param requestId
         *            分配给对云推送的请求的id
         */
        @Override
        public void onListTags(Context context, int errorCode, List<String> tags,
                String requestId) {
            String responseString = "onListTags errorCode=" + errorCode + " tags="
                    + tags;
            Log.d(TAG, responseString);
    
        }
    
        /**
         * PushManager.stopWork() 的回调函数。
         *
         * @param context
         *            上下文
         * @param errorCode
         *            错误码。0表示从云推送解绑定成功;非0表示失败。
         * @param requestId
         *            分配给对云推送的请求的id
         */
        @Override
        public void onUnbind(Context context, int errorCode, String requestId) {
            String responseString = "onUnbind errorCode=" + errorCode
                    + " requestId = " + requestId;
            Log.d(TAG, responseString);
    
          
        }
    
    
    }

            <!-- 注册自己的Receiver-->
    <receiver android:name="com.baidu.push.example.PushTestReceiver">
        <intent-filter>
            <!-- 接收push消息 --> 
            <action android:name="com.baidu.android.pushservice.action.MESSAGE" />
            <!-- 接收bind、setTags等method的返回结果--> 
            <action android:name="com.baidu.android.pushservice.action.RECEIVE" />
            <!-- 接收通知点击事件,和通知自定义内容 --> 
            <action android:name="com.baidu.android.pushservice.action.notification.CLICK" />
        </intent-filter>
    </receiver>


    (6)运行程序,在logCat如果输出如下信息表示成功




    3.服务端

    (1)解压文件,拷贝libs文件夹到自己项目中,并将jar文件build path

    (2)从解压文件中给的example中拷贝AndroidPushMsgToAll到项目中,将apikey和secretkey复制过来,修改main函数中的apikey和secretkey.

    public class AndroidPushMsgToAll {
    	public static void main(String[] args) 
    			throws PushClientException,PushServerException {
    		// 1. get apiKey and secretKey from developer console
    		String apiKey = "3bDa94fqBVGQ20gReLvZWbAZ";
    		String secretKey = "jU4rBLw7j0AOpjCETVS1Qx72xER7b5Gu";
    		PushKeyPair pair = new PushKeyPair(apiKey, secretKey);
    
    		// 2. build a BaidupushClient object to access released interfaces
    		BaiduPushClient pushClient = new BaiduPushClient(pair,
    				BaiduPushConstants.CHANNEL_REST_URL);
    
    		// 3. register a YunLogHandler to get detail interacting information
    		// in this request.
    		pushClient.setChannelLogHandler(new YunLogHandler() {
    			@Override
    			public void onHandle(YunLogEvent event) {
    				System.out.println(event.getMessage());
    			}
    		});
    
    		try {
    			// 4. specify request arguments
    			PushMsgToAllRequest request = new PushMsgToAllRequest()
    					.addMsgExpires(new Integer(3600)).addMessageType(0)
    					.addMessage("Hello Baidu push") //添加透传消息
    					.addSendTime(System.currentTimeMillis() / 1000 + 120) // 设置定时推送时间,必需超过当前时间一分钟,单位秒.实例2分钟后推送
    					.addDeviceType(3);
    			// 5. http request
    			PushMsgToAllResponse response = pushClient.pushMsgToAll(request);
    			// Http请求结果解析打印
    			System.out.println("msgId: " + response.getMsgId() + ",sendTime: "
    					+ response.getSendTime() + ",timerId: "
    					+ response.getTimerId());
    		} catch (PushClientException e) {
    			if (BaiduPushConstants.ERROROPTTYPE) {
    				throw e;
    			} else {
    				e.printStackTrace();
    			}
    		} catch (PushServerException e) {
    			if (BaiduPushConstants.ERROROPTTYPE) {
    				throw e;
    			} else {
    				System.out.println(String.format(
    						"requestId: %d, errorCode: %d, errorMessage: %s",
    						e.getRequestId(), e.getErrorCode(), e.getErrorMsg()));
    			}
    		}
    	}
    }


    (3)运行main方法,控制台输出如下信息,android客户端将收到一条推送

    URL:[http://api.tuisong.baidu.com/rest/3.0/push/all]
    params:[apikey=3bDa94fqBVGQ20gReLvZWbAZ&device_type=3&msg=Hello+Baidu+push&msg_expires=3600&msg_type=0&send_time=1449639409&sign=fb5a837c77944908258077d9ff7feda0×tamp=1449639289]
    HttpStatusCode:[200]
    Response:[{"request_id":99473142,"response_params":{"msg_id":"6151056986351521603","send_time":"1449639409","timer_id":"7605008479284309731"}}
    ]
    
    msgId: 6151056986351521603,sendTime: 1449639409,timerId: 7605008479284309731
    


    有时候可能会有延迟,需要过一会儿才能收到推送,也可以直接通过百度云推送控制台向应用发送推送

    百度云推送控制台:http://push.baidu.com/console/app


    代码下载:http://download.csdn.net/detail/lom9357bye/9350027


    展开全文
  • 百度云推送--分析与开发详解

    千次阅读 2015-03-12 14:59:36
    百度云推送,极光推送和个推各自的优势是什么? 极光推送功能优势: 1、高效稳定的推送通知 为合作伙伴提供长连接SDK,开发者的服务消息可以推送到其客户端。使你的应用程序保持高注意力,即使用户没有打开应用程序...

    一:优势分析

    百度云推送,极光推送和个推各自的优势是什么?

    极光推送功能优势:

    1、高效稳定的推送通知

    为合作伙伴提供长连接SDK,开发者的服务消息可以推送到其客户端。使你的应用程序保持高注意力,即使用户没有打开应用程序,也能够推送通知到达用户手机。您可以即时向用户推送活动提示、动态更新、积分信息等通知。100万并发量不超过40秒,水平服务器架构,任何单点失效都并不会影响推送。

    2、自由度高,推送自定义消息。

    强大的自定义消息推送通道。开发者可以推送自定义的消息内容。JPush SDK 把内容完全转给开发者应用程序,由开发者应用程序去处理自定义消息。

    3、灵活推送工具

    灵活地根据需要进行推送。管理Portal上的推送助手,方便快速推送,普通用户都可操作。另外也提示API调用方式,灵活强大。

    4.推送平台技术架构先进,经过考验的大规模用户 Push 平台

    由于之前开发过IM应用,极光在消息推送业务上有丰富的技术沉淀期,并且不断地优化系统,满足快速的业务增长。

    免费推送服务

    推送的用户数量没有限制,推送的消息条数也没有限制。

    方便集成的SDK及良好的文档和技术支持体系

    android 3分钟demo

    ios 简单配置

    客户端SDK以非常低的代价保持连接,电量、流量消耗少。

    推送内容的多少是由开发者决定的,网络状况不稳定也会对电量造成影响。在不考虑推送的内容和网络影响前提下。理论数据平均值为:流量消耗 20K/天,电量消耗 30mAh/天

    5、专业图表、推送精准化

    推送效果直观呈现。推送到达了多少?到达后,用户有没有点击打开应用?打开应用后,用户逗留的时间有没有延长 ? 直观的对比图表,让你轻松地评估推送效果。

    这是极光推送应用后的数据趋势图:


    云推送平台具备的优势

     

    单播消息推送

    通过绑定channel id、user id,可以向特定的Android客户端发送消息或通知

    高安全性

    平台在服务端与SDK进行通讯时进行了数据加密,保证客户数据的隐私安全。同时,个推平台还支持客户对传输数据自主加密,满足高安全性客户的需求。

    高可靠性

    平台服务器部署在IDC核心机房,三线接入,保证不同运营商移动设备接入的稳定性。个推平台采用分布式架构部署,不仅系统容量可灵活扩容,还可以提供99.9% SLA。个信专业的运维团队维护,消息到达率超过96%。

    低成本

    平台专注推送服务领域的研究,单台设备支持100-300万用户在线(根据单台设备配置会有波动),平均成本控制业界领先。

    出乎意料的快速,瞬间送达

    平台的消息投递延时小于0.2s,无论何时何地,用户移动设备有网络即可送达。

    专为手机优化,省电省流量

    平台采用自主研发的独有协议,比XMPP更适合移动设备使用,符合4S标准(小巧、省电、省流量、稳定)。实测移动设备空载耗电每日15-50mAh,空载流量0.8-1.2M/月。

    个推平台具备的优势

    高安全性

    个推平台在服务端与SDK进行通讯时进行了数据加密,保证客户数据的隐私安全。同时,个推平台还支持客户对传输数据自主加密,满足高安全性客户的需求。

    高可靠性

    个推平台服务器部署在IDC核心机房,三线接入,保证不同运营商移动设备接入的稳定性。个推平台采用分布式架构部署,不仅系统容量可灵活扩容,还可以提供99.9% SLA。个信专业的运维团队维护,消息到达率超过96%。

    低成本

    个推平台专注推送服务领域的研究,单台设备支持100-300万用户在线(根据单台设备配置会有波动),平均成本控制业界领先。

    出乎意料的快速,瞬间送达

    个推平台的消息投递延时小于0.2s,无论何时何地,用户移动设备有网络即可送达。

    专为手机优化,省电省流量

    个推平台采用自主研发的独有协议,比XMPP更适合移动设备使用,符合4S标准(小巧、省电、省流量、稳定)。实测移动设备空载耗电每日15-50mAh,空载流量0.8-1.2M/月。

    易于实施

    个推平台移动设备SDK集成半天即可完成,使用推送管理后台,当天即可零开发群发消息。同时,个推平台也提供完善成熟的服务API可以与客户已有业务系统紧密结合。

    强大的分析报表

    个推平台可以提供应用的留存用户,在线用户等核心数据,并会不定期提供行业数据分析报告及客户的行业排名指数。对于消息投递到用户后的访问行为,个推平台也会提供精准的效果评估报告。

    实现步骤

    开发前准备

    4.1 运行环境 

    可运行于Android 2.1(API Level 7)及以上版本。 

    4.2 参数申请及权限开通 

    4.2.1 获取应用ID及API Key 

    开发者需要使用百度账号登录百度开发者中心注册成为百度开发者并创建应用,方可获取应用ID、对应的API Key及Secret Key等信息。具体信息,请参考百度开发者中心上的“创建应用”的相关介绍。 

    其中,应用ID(即:APP ID)用于标识开发者创建的应用程序;API Key(即:Client_id)是开发者创建的应用程序的唯一标识,开发者在调用百度API时必须传入此参数。 

    4.3 账户支持 

    4.3.1 百度账户 

    开发者可选择使用oauth2.0协议接入百度开放平台,所有用户标识使用百度的userid作为唯一标识,使用AccessToken作为验证凭证。 

    Android端用PushManager.startWork(context, PushConstants.LOGIN_TYPE_ACCESS_TOKEN, UserAccessToken)启动基于百度账户的Push服务,当然要获得AccessToken需要登陆界面的辅助,在Android demo里有相关示例代码。 

    4.3.2 无账户登录体系 

    开发者无需接入百度账户体系,每个终端直接通过API Key向Server请求用户标识userid,此id是根据端上的属性生成,具备唯一性,开发者可通过此id对应到自己的账户系统,此方式方便灵活,但需要开发者自己设计账户体系和登录界面。无账户登录体系启动Android端Push服务的方法: 

    PushManager.startWork(context, PushConstants.LOGIN_TYPE_API_KEY, apiKey); 

    (有账户无账户登录区别:唯一标示问题.

    百度账户登录,所有用户标示使用百度用户的userid作为唯一标示,使用AccessToken作为验证凭证.

    无账户登录,直接通过API Key向Server请求用户标识userid,此id是根据端上的属性生成,具备唯一性.)

    基本操作步骤

    注册百度账号,并成为百度开发者

    2 创建w应用,获取 API Key 及 Secret Key

    3 Android项目导入相应jar包和.so文件,

    4 加入推送所需权限,

    5 创建广播接收者,用来接受推送消息的到来

    6 在清单文件中将之前获取的API Key写入

    7 把示例(Android 项目)导入 Eclipse 工程;

    8 运行Android应用;

    9 登录管理控制台发送通知;

    10 手机端接收通知。

    单播消息推送

    (1)向应用的特定终端推送消息

    一个channel id指定一个终端,因此在这种需求下,开发者需要通过服务端API,向一个特定channel id推送消息。在推送之前,客户端应用通过绑定接口的返回值获取到channel id,并通过网络等手段发送给开发者,开发者需自行维护channel id。

    例如,Android客户端,在调用了startWork之后,自定义消息 receiver将会收到返回值,其中包含了channel id、user id等信息。

    (2)向应用的特定用户推送消息

    云推送用user id来表示用户,因此在这种需求下,开发者需要通过服务端API,向一个特定user id推送消息。和channel id获取方式类似,客户端应用通过绑定接口的返回值获取到user id。开发者需要自行维护user id。

     

     

    Android设备与user id绑定,服务器交互

    如何让user id和APP端用户名做绑定 ?

    startWork(getApplicationContext(),PushConstants.LOGIN_TYPE_API_KEY, PushApplication.API_KEY);// 无baidu帐号登录,以apiKey随机获取一个user id

    User id是自动生成的还是客户端设置的?

    User id是通过startWork自动生成的.与之同时生成的还有channel id.

    与服务器访问url?需要带参数?

    无账号绑定后,app会在receive代码中获取一系列参数(user id ,channel id等).

    将这些数据与用户名通过接口发送到后台(自己的接口).后台再从百度云那里的服务端获取所有用户的userid遍历,判断推送.

    接受推送通知的具体参数内容

     

    Push调用url:

    http://developer.baidu.com/wiki/index.php?title=docs/cplat/push/api/list#push_msg

    需要考虑问题

    1.user id用户的唯一标示的可更改性?

    User id 必须与用户名绑定才能准确的进行消息推送.

    登录之后,把用户名跟设备IMEI还是什么了,或者百度返回的那个userid发给后台,然后后台再从百度云那里的服务端获取所有用户的userid遍历,判断推送.

     

     

     

    实现细节

    1.注册百度应用账户,创建项目app,获取API key

     

     

    2.下载SDK 获取jar包和.so文件.导入自己的项目

     

    3.在清单文件中注明API Key,方便后续调用.(也可在类中定义为常量)

     

    Name=”api_key” value为在百度应用创建app时获取的API key.

     

    一共三个receiver一个service ,其中一个receiver为我们接受到数据需要处理的类:

    4.定义广播接受者继承FrontiaPushMessageReceiver,接受Push消息处理receiver。在此receiver中定义回调函数.同时在清单文件注册.

     

    5.Push必须的receviverservice声明

            <receiver android:name="com.baidu.android.pushservice.PushServiceReceiver"

                android:process=":bdservice_v1">

                <intent-filter>

                    <action android:name="android.intent.action.BOOT_COMPLETED" />

                    <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />

                    <action android:name="com.baidu.android.pushservice.action.notification.SHOW" />

                    <action android:name="com.baidu.android.pushservice.action.media.CLICK" />

                </intent-filter>

            </receiver>

            <receiver android:name="com.baidu.android.pushservice.RegistrationReceiver"

                android:process=":bdservice_v1">

                <intent-filter>

                    <action android:name="com.baidu.android.pushservice.action.METHOD" />

                    <action android:name="com.baidu.android.pushservice.action.BIND_SYNC" />

                </intent-filter>

                <intent-filter>

                    <action android:name="android.intent.action.PACKAGE_REMOVED"/>

                    <data android:scheme="package" />

                </intent-filter>                   

            </receiver>

            <service

                android:name="com.baidu.android.pushservice.PushService"

                android:exported="true"

                android:process=":bdservice_v1" />

     

    6.第一次登录app后开启推送服务:这里使用无账号登录,”api_key”申请获取唯一的

     

    startWork(Context context, int loginType, String loginValue)三个参数:

    1.上下文

    2.登录方式

    (一种有账号登录,通过百度账号登录.PushConstants.LOGIN_TYPE_ACCESS_TOKEN

    另一种无账号登录,通过api_key. PushConstants.LOGIN_TYPE_API_KEY,)

    3.登录值,这里是之前获取的API_Key.

    PushManager.startWork(getApplicationContext(),

    PushConstants.LOGIN_TYPE_API_KEY, 

    Utils.getMetaValue(PushDemoActivity.this, "api_key"));

     

    7. 如果您的工程中实现了Application的继承类,那么,您需要将父类改为com.baidu.frontia.FrontiaApplication

     如果您没有实现Application的继承类,那么,请在AndroidManifest.xmlApplication标签中增加属性: 

     <application android:name="com.baidu.frontia.FrontiaApplication"

    (如果不设置以上属性会导致能收到消息却不能收到通知的情况)

     

    8.设置通知的图标样式(可以不设置,不设置则使用系统默认的通知样式);

     

    后台服务器端调用百度云接口:

    1.查询:

    query_bindlist

    功能

    查询设备、应用、用户与百度Channel的绑定关系。

    HTTP请求方式

    GET | POST

    URL

    http[s]://channel.api.duapp.com/rest/2.0/channel/{channel_id}

    注意:

    如果查询的绑定关系与channel_id无关,则{channel_id}部分直接填写channel即可。

     

    2.push发送推送

     

    push_msg

    功能

    推送消息,该接口可用于推送单个人、一群人、所有人以及固定设备的使用场景。

    HTTP请求方式

    POST

    URL

    http[s]://channel.api.duapp.com/rest/2.0/channel/channel

     

    关键参数:apikey ,user_id ,push_type(单个人,一群人,所有人) ,message_type(消息,通知),messages(消息内容).

     

    签到,任务数,之前的消息机制不改变.在原来基础上加上云推送:

    App进程不被杀死的情况下之前消息机制的ok. 

    如果App进程被杀,则需要考虑两种情况:

    1.App已经登录

    2.App已经注销登录

     

    登录账户成功:执行startWork方法    onbind服务

    注销登录 :  执行stopWork方法     unonbind服务 

    (之前的推送轮询的只有经纬度获取)

     

    签到:已经签到则不再有消息提醒;(只要App进程还在,则会一直轮询检查是否已经签到,服务器端也需要5[自定义]分钟一轮询).

     

    新消息任务以透传消息的方式发送,消息数,任务数.app获取数量后和之前存储的数量相对比.有新的则通知栏提醒,跳转到app消息任务主界面.( 如果app未登录则无法获取用户信息?无法知道用户用什么账号登录?)

    传送方式:android自定义字段

    "custom_content": {

        "key1":"value1", 

        "key2":"value2"

        }, 

     


    展开全文
  • 百度云推送(Java实现)

    千次阅读 2014-09-26 11:35:50
    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 ...35
  • Android推送 百度云推送 入门篇

    万次阅读 多人点赞 2014-05-27 20:52:27
    现在app基本都有推送的功能,于是看了下百度云的推送,官方文档和Demo都很到位,记录下使用过程,目标是利用百度云推送最为服务器写个及时通讯的例子~当然了,这是第一篇入门~ 1、第一步就是在百度开发者服务管理中...
  • [置顶] 百度云推送push的使用

    千次阅读 2017-06-05 09:29:56
    [置顶] 百度云推送push的使用 标签: 免费百度云推送Androidpush 2016-03-30 00:34 1323人阅读 评论(0) 收藏 举报  分类: Android(3)  版权声明:本文为博主原创文章,未经博主允许不得...
  • 因为之前没有集成过百度云推送,接手新项目之后项目需求是接入百度云推送,没办法因为项目是海外项目所以只能硬着头皮来接入了,话多说开始你的表演: 首先就是去百度云推送的官网去创建应用并启用: .在配置详情页...
  • 这两天由于项目需要,研究了一下百度云推送,本来这事没什么多大工作量的,但注册百度开发者账户创建应用令我蛋疼菊紧了好一阵,这些东西做了对技术没啥提升,做又不行,必经之路。好在我耗费了N多个毫毫秒秒后稀...
  • 百度云推送消息,参考百度云推送官网,以下是核心代码:private void SendNotificationToAndroid(string message) { BaiduPush Bpush = new BaiduPush("POST", SecretKey); String messages = "";
  • 通过百度云推送官网的创建通知来推送消息手机客户端可以收到推送。但是通过公司的后台发送通知手机客户端无法收到消息。 后台显示是推送成功,android客户端能收到后天推送的消息。 联系百度云推送客服没有...
  • 百度云推送实现原理文档和针对自己网站会员推送系统的实现说明
  • 在百度上 搜索百度云推送http://push.baidu.com/ 文档中心有个 3分钟快速入门 http://push.baidu.com/doc/guide/join 点击下载SDK 立即下载 点击创建应用 (注意包名) 创建完成 点击应用配置 有API KEY值 ...
  • Android 高仿微信实时聊天 基于百度云推送

    万次阅读 多人点赞 2014-08-24 23:00:21
    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38799363 ,本文出自:【张鸿洋的博客】一直在仿微信界面,今天终于有幸利用百度云推送仿一仿微信聊天了~~~首先特别感谢:weidi1989分享的...
  • 现在Android有不少的第三方推送接口,大大节省了我们的时间,让我们专注于软件本身的编写。 极光推送作为一个比较成熟的推送API,用起来是非常便利的,今天就来总结一下。 注册账号之后,首先创建一个应用,如下图:...
  • 百度云推送 java后台可以向android推送透传消息吗?
  • 百度云推送javaSDK demo

    2017-03-15 18:31:28
    百度云推送巴拉巴拉巴拉 近阶段由于PM同学的强烈要求,我们app服务端准备接入百度云推送工程,那么现在开始demo走起,本Demo主要是针对标签推送。 下载百度云推送SDK 网址:http://push.baidu.com/doc/java/api ...
  • 百度云推送 从无

    千次阅读 2014-04-17 10:56:56
    最近在做一个移动项目,其中用到了推送服务,查阅了很多资料,大多数都用的第三方
  • 百度云推送,直接运用demo项目中

    千次阅读 2015-09-16 13:10:31
    百度云推送的demo写的很详细,可以把整个demo拷自己的项目中直接运用(处于程序猿阶段的)。复制粘贴代码一向是我的强项。 运用百度云推送,具体查看百度云推送demo,贴代码了。 说一下遇到的几个问题: 1、基于...
  • 本文主要介绍Java服务器端如何借助第三方推送平台(百度云推送)推送给移动端消息。 使用案例介绍: 根据客户的需求,需要做一个类似淘宝消息推送的功能,客户下订单、订单付款、订单商品已发货,以及客户完成评论,...
  • 安卓手机上安装了两个应用,都配置了百度云推送,但一个能收到,一个收不到。我希望的是想推给哪个应用,哪个应用就能收到,而且不会被另一个拦截。谢谢!
  • 百度云推送push的使用

    千次阅读 2016-03-30 00:34:41
    版权声明:本文为博主原创文章,未经博主允许...1. 到百度云推送官网下载最新版本的SDK http://push.baidu.com/sdk/push_client_sdk_for_android   2. 将SDK下的jar包和so文件拉项目中libs目录下   3. 添加
  • 之前介绍过如何使用shareSDK实现新浪微博分享功能,今天介绍如何使用百度云推送SDK实现Android手机后台推送功能。 运行效果如下 第一步,如果使用百度的SDK,当然要先成为百度的开发者啦,这个就...
  • 百度云推送的研究

    千次阅读 2016-05-17 16:36:31
    0.下一个百度云推送的demo 1.准备一个自己的API KEY,否则绑定失败,无法接收到推送的消息。 2.在androidManifest.xml 中将api_key修改并且保存。 android:name="api_key" android:value="my_api_key" />3.修改...
  • 百度云推送集成之Maven方式

    千次阅读 2016-01-06 20:01:31
    百度云推送集成非常方便,端上大概半天不到就搞定了,官网给的教程非常给力,详细而又全面。 服务端的sdk也有非常详细的示例,直接导入相关jar就可以了,不过对于少部分使用maven来管理jar包的同志来说需要自己将...
  • Android之百度云推送如何集成java服务端相信研究消息推送都不是玩的,是想用到项目中,那我们就来看看如何快速导入项目中第一步新建个java工程cbzsPush第二步新建个libs文件夹导入需要jar包,并addBulidPath第三步将...
  • Android百度云推送接入,附完整代码

    千次阅读 2018-06-22 14:29:41
    1、创建应用获取api_key百度云推送:http://push.baidu.com/ SDK下载:http://push.baidu.com/sdk/push_client_sdk_for_android 2、添加jarlibs文件下 compile files('libs/galaxy.jar') implementation...
  • iOS集成指南 iOS云推送简介 ...云推送的iOS实现基于苹果公司的APNs服务,相当于给APNs做了层代理。设计的基本思路是: 客户端上,尽可能的保持原有APNs编程模型,让开发者的切换成本最
  • 理解百度云推送的几个概念

    千次阅读 2015-12-01 17:46:52
    之前我们android项目的IM功能和推送功能使用的是国内的环信,但是项目需要部署欧洲,欧洲地区对个人隐私数据的保护非常...如果是中国,那我们就使用百度云推送解决方法;如果是国外环境,使用的是google GCM推送。

空空如也

1 2 3 4 5 ... 20
收藏数 13,514
精华内容 5,405
关键字:

百度云推送