安卓开发如何用百度云实现任意用户 都可以按一个按钮 然后给其他用户发送一条NOTIFICATION
希望提供思路和部分源代码。谢谢啦(本人新手,查了好多资料还是毫无思路,只知道如何在管理控制台中给用户发)...
希望提供思路和部分源代码。谢谢啦(本人新手,查了好多资料还是毫无思路,只知道如何在管理控制台中给用户发)
展开
1个回答
展开全部
百度云推送分两部分:web端和手机端。
我们先看下手机端如何做。
1.注册百度账户
2.加入 百度开发者
3.创建应用
4.下载sdk
5.导入sdk包,开发应用
5.1 在AndroidManifest.xml 中注册响应的receiver
5.2 在主窗体的oncreate中写
PushManager.startWork(getApplicationContext(),
PushConstants.LOGIN_TYPE_API_KEY,
PushServiceUtils.getMetaValue(this, "api_key"));
复制代码
5.3 编写自己的receiver。处理 绑定的相关消息,推送的消息,通知栏点击后的消息
public class MyPushMessageReceiver extends BroadcastReceiver {
private static final String TAG = "BroadcastReceiver";
@Override
public void onReceive(final Context context, Intent intent) {
Log.d(TAG, ">>> Receive intent: \r\n" + intent);
if (intent.getAction().equals(PushConstants.ACTION_MESSAGE)) {
// 获取消息内容
String message = intent.getExtras().getString(
PushConstants.EXTRA_PUSH_MESSAGE_STRING);
// 消息的用户自定义内容读取方式
Log.i(TAG, "onMessage: " + message);
// 自定义内容的json串
Log.d(TAG,
"EXTRA_EXTRA = "
+ intent.getStringExtra(PushConstants.EXTRA_EXTRA));
// 用户在此自定义处理消息,以下代码为demo界面展示用
Intent responseIntent = null;
responseIntent = new Intent(PushServiceUtils.ACTION_MESSAGE);
responseIntent.putExtra(PushServiceUtils.EXTRA_MESSAGE, message);
responseIntent.setClass(context, MainActivity.class);
responseIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(responseIntent);
} else if (intent.getAction().equals(PushConstants.ACTION_RECEIVE)) {
// 处理绑定等方法的返回数据
// PushManager.startWork()的返回值通过PushConstants.METHOD_BIND得到
// 获取方法
final String method = intent
.getStringExtra(PushConstants.EXTRA_METHOD);
// 方法返回错误码。若绑定返回错误(非0),则应用将不能正常接收消息。
// 绑定失败的原因有多种,如网络原因,或access token过期。
// 请不要在出错时进行简单的startWork调用,这有可能导致死循环。
// 可以通过限制重试次数,或者在其他时机重新调用来解决。
int errorCode = intent.getIntExtra(PushConstants.EXTRA_ERROR_CODE,
PushConstants.ERROR_SUCCESS);
String content = "";
if (intent.getByteArrayExtra(PushConstants.EXTRA_CONTENT) != null) {
// 返回内容
content = new String(
intent.getByteArrayExtra(PushConstants.EXTRA_CONTENT));
}
// 用户在此自定义处理消息,以下代码为demo界面展示用
Log.d(TAG, "onMessage: method : " + method);
Log.d(TAG, "onMessage: result : " + errorCode);
Log.d(TAG, "onMessage: content : " + content);
Toast.makeText(
context,
"method : " + method + "\n result: " + errorCode
+ "\n content = " + content, Toast.LENGTH_SHORT)
.show();
Intent responseIntent = null;
responseIntent = new Intent(PushServiceUtils.ACTION_RESPONSE);
responseIntent.putExtra(PushServiceUtils.RESPONSE_METHOD, method);
responseIntent.putExtra(PushServiceUtils.RESPONSE_ERRCODE,
errorCode);
responseIntent.putExtra(PushServiceUtils.RESPONSE_CONTENT, content);
responseIntent.setClass(context, MainActivity.class);
responseIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(responseIntent);
// 可选。通知用户点击事件处理
} else if (intent.getAction().equals(
PushConstants.ACTION_RECEIVER_NOTIFICATION_CLICK)) {
Log.d(TAG, "intent=" + intent.toUri(0));
// 自定义内容的json串
String customData = intent
.getStringExtra(PushConstants.EXTRA_EXTRA);
Log.d(TAG,
"EXTRA_EXTRA = "
+ intent.getStringExtra(PushConstants.EXTRA_EXTRA));
if (customData == null || "".equals(customData)) {
return;
}
Intent aIntent = new Intent();
aIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
aIntent.setClass(
context,
com.pdwy.wulianwang.mobile.main.notification.NotificationDetails_Activity.class);
String title = intent
.getStringExtra(PushConstants.EXTRA_NOTIFICATION_TITLE);
aIntent.putExtra(PushConstants.EXTRA_NOTIFICATION_TITLE, title);
String content = intent
.getStringExtra(PushConstants.EXTRA_NOTIFICATION_CONTENT);
aIntent.putExtra(PushConstants.EXTRA_NOTIFICATION_CONTENT, content);
String detailContent = "";
try {
org.json.JSONObject json = new JSONObject(customData);
detailContent = json.getString("detailContent");
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 保存在数据库
NotifyDao dao = new NotifyDao();
int notifyId = dao.saveNotify(title, content, detailContent);
// 向消息详细页发送内容
aIntent.putExtra("notify_id", notifyId);
context.startActivity(aIntent);
}
}
}
要是还不能解决
你来我们群里说吧 这里是开发者互相学习交流的
有大神 让他们给你解释你的疑问 q un号 188168040
我们先看下手机端如何做。
1.注册百度账户
2.加入 百度开发者
3.创建应用
4.下载sdk
5.导入sdk包,开发应用
5.1 在AndroidManifest.xml 中注册响应的receiver
5.2 在主窗体的oncreate中写
PushManager.startWork(getApplicationContext(),
PushConstants.LOGIN_TYPE_API_KEY,
PushServiceUtils.getMetaValue(this, "api_key"));
复制代码
5.3 编写自己的receiver。处理 绑定的相关消息,推送的消息,通知栏点击后的消息
public class MyPushMessageReceiver extends BroadcastReceiver {
private static final String TAG = "BroadcastReceiver";
@Override
public void onReceive(final Context context, Intent intent) {
Log.d(TAG, ">>> Receive intent: \r\n" + intent);
if (intent.getAction().equals(PushConstants.ACTION_MESSAGE)) {
// 获取消息内容
String message = intent.getExtras().getString(
PushConstants.EXTRA_PUSH_MESSAGE_STRING);
// 消息的用户自定义内容读取方式
Log.i(TAG, "onMessage: " + message);
// 自定义内容的json串
Log.d(TAG,
"EXTRA_EXTRA = "
+ intent.getStringExtra(PushConstants.EXTRA_EXTRA));
// 用户在此自定义处理消息,以下代码为demo界面展示用
Intent responseIntent = null;
responseIntent = new Intent(PushServiceUtils.ACTION_MESSAGE);
responseIntent.putExtra(PushServiceUtils.EXTRA_MESSAGE, message);
responseIntent.setClass(context, MainActivity.class);
responseIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(responseIntent);
} else if (intent.getAction().equals(PushConstants.ACTION_RECEIVE)) {
// 处理绑定等方法的返回数据
// PushManager.startWork()的返回值通过PushConstants.METHOD_BIND得到
// 获取方法
final String method = intent
.getStringExtra(PushConstants.EXTRA_METHOD);
// 方法返回错误码。若绑定返回错误(非0),则应用将不能正常接收消息。
// 绑定失败的原因有多种,如网络原因,或access token过期。
// 请不要在出错时进行简单的startWork调用,这有可能导致死循环。
// 可以通过限制重试次数,或者在其他时机重新调用来解决。
int errorCode = intent.getIntExtra(PushConstants.EXTRA_ERROR_CODE,
PushConstants.ERROR_SUCCESS);
String content = "";
if (intent.getByteArrayExtra(PushConstants.EXTRA_CONTENT) != null) {
// 返回内容
content = new String(
intent.getByteArrayExtra(PushConstants.EXTRA_CONTENT));
}
// 用户在此自定义处理消息,以下代码为demo界面展示用
Log.d(TAG, "onMessage: method : " + method);
Log.d(TAG, "onMessage: result : " + errorCode);
Log.d(TAG, "onMessage: content : " + content);
Toast.makeText(
context,
"method : " + method + "\n result: " + errorCode
+ "\n content = " + content, Toast.LENGTH_SHORT)
.show();
Intent responseIntent = null;
responseIntent = new Intent(PushServiceUtils.ACTION_RESPONSE);
responseIntent.putExtra(PushServiceUtils.RESPONSE_METHOD, method);
responseIntent.putExtra(PushServiceUtils.RESPONSE_ERRCODE,
errorCode);
responseIntent.putExtra(PushServiceUtils.RESPONSE_CONTENT, content);
responseIntent.setClass(context, MainActivity.class);
responseIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(responseIntent);
// 可选。通知用户点击事件处理
} else if (intent.getAction().equals(
PushConstants.ACTION_RECEIVER_NOTIFICATION_CLICK)) {
Log.d(TAG, "intent=" + intent.toUri(0));
// 自定义内容的json串
String customData = intent
.getStringExtra(PushConstants.EXTRA_EXTRA);
Log.d(TAG,
"EXTRA_EXTRA = "
+ intent.getStringExtra(PushConstants.EXTRA_EXTRA));
if (customData == null || "".equals(customData)) {
return;
}
Intent aIntent = new Intent();
aIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
aIntent.setClass(
context,
com.pdwy.wulianwang.mobile.main.notification.NotificationDetails_Activity.class);
String title = intent
.getStringExtra(PushConstants.EXTRA_NOTIFICATION_TITLE);
aIntent.putExtra(PushConstants.EXTRA_NOTIFICATION_TITLE, title);
String content = intent
.getStringExtra(PushConstants.EXTRA_NOTIFICATION_CONTENT);
aIntent.putExtra(PushConstants.EXTRA_NOTIFICATION_CONTENT, content);
String detailContent = "";
try {
org.json.JSONObject json = new JSONObject(customData);
detailContent = json.getString("detailContent");
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 保存在数据库
NotifyDao dao = new NotifyDao();
int notifyId = dao.saveNotify(title, content, detailContent);
// 向消息详细页发送内容
aIntent.putExtra("notify_id", notifyId);
context.startActivity(aIntent);
}
}
}
要是还不能解决
你来我们群里说吧 这里是开发者互相学习交流的
有大神 让他们给你解释你的疑问 q un号 188168040
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询