失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Android百度云推送接入 附完整代码

Android百度云推送接入 附完整代码

时间:2020-07-11 17:37:51

相关推荐

Android百度云推送接入 附完整代码

1、创建应用获取api_key百度云推送:/

SDK下载:/sdk/push_client_sdk_for_android

2、添加jar到libs文件下

compile files('libs/galaxy.jar')

implementation files('libs/pushservice-6.1.1.21.jar')implementation files('libs/ufosdk-android-1.7.13.jar')

3、权限配置 ,主要包名改为当前项目包名------>

com.baidu.push.example 改为当前项目包名

com.tianxin.mapclient.liteapp 改为当前项目包名

<!-- 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" /><!-- 适配Android N系统必需的ContentProvider写权限声明,写权限包含应用包名 --><uses-permissionandroid:name="baidu.push..baidu.push.example" /><permission android:name="baidu.push..baidu.push.example"android:protectionLevel="normal" />

4、资源类配置,。主要包名改为当前项目包名。api_key改为当前项目申请的api_key

项目包名后面,注意要加上.bdpush

<!-- push富媒体,使用富媒体推送必须声明 --><activity android:name="com.baidu.android.pushservice.richmedia.MediaViewActivity"android:configChanges="orientation|keyboardHidden" android:label="MediaViewActivity" /><activity android:name="com.baidu.android.pushservice.richmedia.MediaListActivity"android:configChanges="orientation|keyboardHidden" android:label="MediaListActivity"android:launchMode="singleTask" /><!-- push富媒体结束 --><!-- push应用定义消息receiver声明 --><receiver android:name=".MyPushMessageReceiver"><intent-filter><!-- 接收push消息 --><action android:name="com.baidu.android.pushservice.action.MESSAGE" /><!-- 接收bind,unbind,fetch,delete等反馈消息 --><action android:name="com.baidu.android.pushservice.action.RECEIVE" /><action android:name="com.baidu.android.pushservice.action.notification.CLICK" /></intent-filter></receiver><!-- push必须的receviver和service声明 --><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=".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><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><service android:name="com.baidu.mandService"android:exported="true" /><!-- 适配Android N系统必需的ContentProvider声明,写权限包含应用包名--><provider android:name="com.baidu.android.pushservice.PushInfoProvider"android:authorities="com.tianxin.mapclient.liteapp.bdpush" android:exported="true"android:protectionLevel="signature"android:writePermission="baidu.push..tianxin.mapclient.liteapp" /><!-- 在百度开发者中心查询应用的API Key --><meta-data android:name="api_key" android:value="tDrb727hnpdtLobd1BIpL5GQ" /><!-- UfoSDK --><activity android:name="com.baidu.ufosdk.ui.FeedbackListActivity" /><activity android:name="com.baidu.ufosdk.ui.FeedbackFacePageActivity" /><activity android:name="com.baidu.ufosdk.ui.FeedbackImageViewFlipperActivity" /><activity android:name="com.baidu.ufosdk.ui.FeedbackInputActivity" /><activity android:name="com.baidu.ufosdk.ui.FeedbackHotActivity" />

5、创建

MyPushMessageReceiver

public class MyPushMessageReceiver extends PushMessageReceiver {/*** TAG to Log*/public static final String TAG = MyPushMessageReceiver.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*/@Overridepublic 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.i("lgqbbbbb====dddd===", responseString);if (errorCode == 0) {// 绑定成功Log.d(TAG, "绑定成功");}// Demo更新界面展示代码,应用请在这里加入自己的处理逻辑updateContent(context, responseString);}/*** 接收透传消息的函数。** @param context 上下文* @param message 推送的消息* @param customContentString 自定义内容,为空或者json字符串*/@Overridepublic void onMessage(Context context, String message,String customContentString) {String messageString = "透传消息 onMessage=\"" + message+ "\" customContentString=" + customContentString;Log.d(TAG, messageString);// 自定义内容获取方式,mykey和myvalue对应透传消息推送时自定义内容中设置的键和值if (!TextUtils.isEmpty(customContentString)) {JSONObject customJson = null;try {customJson = new JSONObject(customContentString);String myvalue = null;if (!customJson.isNull("mykey")) {myvalue = customJson.getString("mykey");}} catch (JSONException e) {e.printStackTrace();}}// Demo更新界面展示代码,应用请在这里加入自己的处理逻辑updateContent(context, messageString);}/*** 接收通知到达的函数。** @param context 上下文* @param title推送的通知的标题* @param description 推送的通知的描述* @param customContentString 自定义内容,为空或者json字符串*/@Overridepublic void onNotificationArrived(Context context, String title,String description, String customContentString) {String notifyString = "通知到达 onNotificationArrived title=\"" + title+ "\" description=\"" + description + "\" customContent="+ customContentString;Log.d(TAG, notifyString);// 自定义内容获取方式,mykey和myvalue对应通知推送时自定义内容中设置的键和值if (!TextUtils.isEmpty(customContentString)) {JSONObject customJson = null;try {customJson = new JSONObject(customContentString);String myvalue = null;if (!customJson.isNull("mykey")) {myvalue = customJson.getString("mykey");}} catch (JSONException e) {// TODO Auto-generated catch blocke.printStackTrace();}}// Demo更新界面展示代码,应用请在这里加入自己的处理逻辑// 你可以參考 onNotificationClicked中的提示从自定义内容获取具体值updateContent(context, notifyString);}/*** 接收通知点击的函数。** @param context 上下文* @param title推送的通知的标题* @param description 推送的通知的描述* @param customContentString 自定义内容,为空或者json字符串*/@Overridepublic void onNotificationClicked(Context context, String title,String description, String customContentString) {String notifyString = "通知点击 onNotificationClicked title=\"" + title + "\" description=\""+ description + "\" customContent=" + customContentString;Log.d(TAG, notifyString);// 自定义内容获取方式,mykey和myvalue对应通知推送时自定义内容中设置的键和值if (!TextUtils.isEmpty(customContentString)) {JSONObject customJson = null;try {customJson = new JSONObject(customContentString);String myvalue = null;if (!customJson.isNull("mykey")) {myvalue = customJson.getString("mykey");}} catch (JSONException e) {// TODO Auto-generated catch blocke.printStackTrace();}}// Demo更新界面展示代码,应用请在这里加入自己的处理逻辑updateContent(context, notifyString);}/*** setTags() 的回调函数。** @param context上下文* @param errorCode 错误码。0表示某些tag已经设置成功;非0表示所有tag的设置均失败。* @param successTags 设置成功的tag* @param failTags 设置失败的tag* @param requestId 分配给对云推送的请求的id*/@Overridepublic void onSetTags(Context context, int errorCode,List<String> successTags, List<String> failTags, String requestId) {String responseString = "onSetTags errorCode=" + errorCode+ " successTags=" + successTags + " failTags=" + failTags+ " requestId=" + requestId;Log.d(TAG, responseString);// Demo更新界面展示代码,应用请在这里加入自己的处理逻辑updateContent(context, responseString);}/*** delTags() 的回调函数。** @param context上下文* @param errorCode 错误码。0表示某些tag已经删除成功;非0表示所有tag均删除失败。* @param successTags 成功删除的tag* @param failTags 删除失败的tag* @param requestId 分配给对云推送的请求的id*/@Overridepublic void onDelTags(Context context, int errorCode,List<String> successTags, List<String> failTags, String requestId) {String responseString = "onDelTags errorCode=" + errorCode+ " successTags=" + successTags + " failTags=" + failTags+ " requestId=" + requestId;Log.d(TAG, responseString);// Demo更新界面展示代码,应用请在这里加入自己的处理逻辑updateContent(context, responseString);}/*** listTags() 的回调函数。** @param context 上下文* @param errorCode 错误码。0表示列举tag成功;非0表示失败。* @param tags当前应用设置的所有tag。* @param requestId 分配给对云推送的请求的id*/@Overridepublic void onListTags(Context context, int errorCode, List<String> tags,String requestId) {String responseString = "onListTags errorCode=" + errorCode + " tags="+ tags;Log.d(TAG, responseString);// Demo更新界面展示代码,应用请在这里加入自己的处理逻辑updateContent(context, responseString);}/*** PushManager.stopWork() 的回调函数。** @param context 上下文* @param errorCode 错误码。0表示从云推送解绑定成功;非0表示失败。* @param requestId 分配给对云推送的请求的id*/@Overridepublic void onUnbind(Context context, int errorCode, String requestId) {String responseString = "onUnbind errorCode=" + errorCode+ " requestId = " + requestId;Log.d(TAG, responseString);if (errorCode == 0) {// 解绑定成功Log.d(TAG, "解绑成功");}// Demo更新界面展示代码,应用请在这里加入自己的处理逻辑updateContent(context, responseString);}private void updateContent(Context context, String content) {Log.i("xiaodidaoda=====", "updateContent"+content);}}

6、复制整个jniLibs文件到当前项目main下.。还有整个assets文件复制到main下

7、application下运行

UfoSDK.init(this);UfoSDK.openRobotAnswer();// 设置用户的头像UfoSDK.setCurrentUserIcon(getMeIconBitmap());// 在聊天界面中获取聊天信息的时间间隔UfoSDK.setChatThreadTime(10);// 设置当前用户名UfoSDK.setBaiduCuid(DeviceId.getCUID(this));Log.i("lgq","iddddd=== "+DeviceId.getCUID(this));// 我的反馈按钮颜色UfoSDK.setRootBackgroundColor(getResources().getColor(R.color.gray));

8、MainActivity下运行

// 启动百度pushPushManager.startWork(getApplicationContext(), PushConstants.LOGIN_TYPE_API_KEY,Utils.getMetaValue(PushDemoActivity.this, "api_key"));

9、创建推送,创建通知,发送通知,即可收到通知

在线交流bug:qq108520

如果觉得《Android百度云推送接入 附完整代码》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。