导航:首页 > 操作系统 > 友盟推送androiddemo

友盟推送androiddemo

发布时间:2022-10-19 09:30:16

㈠ 友盟-推送-Andorid-后台显示消息发送成功,设备并没有收到消息,

黄金问题。
在用户后台,可以查询设备状态,以及设备收发消息情况,能够查询到设备的状态,以及设备的收发历史情况。

1、如果设备不在线,需要明确几个步骤:

appkey,message-secret-key, package-name, intent 等是否填写正确。
使用demo是否OK,替换为自己的appkey, message-secret-key, package-name, intent之后是否work,App是否打开。机型是什么,网络环境是什么,机器是否Root过,是否有被手机管理软件强杀过,是否频繁切换过网络(或者中止网络)等。后台的长连service是否已经启动。 (umengService_V1). 通过logcat查看。

2、 设备在线的话,查询设备收发消息历史

关于消息发送查询历史查询,有一列叫做“状态”,有“已送达”和“已取走”两个。 “已送达”表示是千真万确的送达设备了。“已取走”表示服务器下发到设备了,很可能由于网络原因消息丢失了。 “已送达”的情况下,消息没有收到,很可能是自身集成的错误。 这个时候要明确发的是 “通知(notification)” 还是 “消息(message)”。 消息的话,需要一些额外的处理,可以再阅读一下SDK中关于“消息”的处理。

㈡ 友盟推送android java端的代码怎么使用

最好的方法,研读官方提供的Demo,这里说的Java端应该是前端,即Android App端,在应用程序启动的时候,开启推送功能,同时在清单文件移植Demo提供的一些内容,测试几遍就差不多了。。。

㈢ 友盟推送android设备不在线怎么解决

Android混淆,又称Android代码混淆,是伴随着Android系统的流行而产生的一种AndroidAPP保护技术,用于保护APP不被破解和逆向分析。 友盟(Umeng),2010年4月在北京成立,是中国最专业、最有数据凝聚力的移动开发者服务平台。友盟提供iOS、Android和Windows Phone等多平台服务。 友盟消息推送,指向指定终端用户(单播)、 所有终端用户(广播) 或 满足特定条件的终端用户群(组播),发送通知或消息。此外,还支持开发者使用 自有的账号系统(alias) 来发送消息给指定的账号或者账号群。 混淆时排除友盟推送的Jar包,只需要在proguard.cfg文件中加入如下配置即可: -dontwarn com.umeng.** -keep class com.umeng*.** {*; }

㈣ 友盟-推送-Andorid-“Alias”是什么, 该如何使用

不少开发者在使用友盟推送的时候,对Alias的用法和使用场景不是太理解,这篇文章给大家普及一下Alias相关的内容:

我们先从产品层面上对Alias的设计思想说起,这样能帮助大家更好的理解和使用Alias。在我们官方文档里面,Alias的定义是: "设备别名,将别名与设备做绑定,便于部分App开发者使用自有账号或者第三方账号体系来做消息推送"。定义里面涉及到几个重要的点:
首先,Alias是和设备绑定的,友盟推送对设备的标识是device-token,也就是说,Alias与友盟device-token是绑定对应的。从这个层面来讲,Alias可以是开发者的账号系统(包括第三方账号体系),也可以是开发者自己对设备的标识体系(如安卓设备上的imei+mac),或者是其它的开发者能保证唯一性的ID体系,这些都是由开发者自己决定的。提问中问到是否可以把Alias理解为账号系统,狭义上讲可以这么理解,实际上,友盟推送赋予了Alias更多的灵活性。
其次,结合到越来越多的App提供第三方社交平台账号登陆的特点,我们在Alias的设计上也充分考虑到了账号的需求,所以在官方文档中,我们提到在使用Alias的时候,必须要关联一个alias_type, 如果是开发者自定义的alias(包括自有账号系统),这个alias_type是可以随便定义的;如果是用了第三方账号系统,我们预提供了20多种主流的开放平台的账号类型,如新浪微博(SINA_WEIBO), 微信(WEIXIN)等。填写alias_type的作用是,友盟推送会和友盟社会化分享服务做数据上的打通,更好的从数据层面发挥价值,为开发者服务。说到这里,我们再次精确一下Alias的概念,即别名(Alias)+别名类型(alias_type)与设备的绑定。
最后,我们来聊聊Alias的用法,这个也是开发者们非常关心的。我们Alias的绑定操作是在SDK端提供的,开发者只需要在SDK端调用mPushAgent.addAlias(alias, alias_type)这个接口,友盟推送SDK就负责把alias+alias_type与友盟的device-token做绑定,将绑定关系回传到友盟后端服务器。之后开发者就可以根据自有业务逻辑,调用友盟服务器端接口,根据Alias来做个性化推送了。由此来看,Alias的作用是能让开发者结合自有的账号(此处需要理解成广义的账号)体系,来做更个性化、精细化的推送。下图是一个简化的Alias架构,帮助大家理解Alias的用法:

关于Alias的相关接口,我们的友盟消息推送Android文档提供了非常丰富的接口供开发者调用:
[Java] 纯文本查看 复制代码
?
1
2
3
4
5
添加Alias
mPushAgent.addAlias("[email protected]", ALIAS_TYPE.SINA_WEIBO);

移除Alias
mPushAgent.removeAlias("[email protected]", ALIAS_TYPE.SINA_WEIBO);

注意,在App服务器端调用友盟服务器端接口做推送的时候,一定不要忘了传入alias_type的参数。

关于Alias基本的话题差不多解释清楚了,最后再和大家深入聊聊Alias用作账号系统涉及到多账号多设备登陆的问题,这个时候,alias_type就派上用场了,相信看过这个章节后,大家会对我们Alias的设计机制有更深入的理解:
1. 多个账号登陆同一台设备,具体还要细分为两种case:
如果是同一个alias_type,那么以最后绑定的alias为准。举个例子: (alias_A, alias_type_A)先做了绑定,之后(alias_B, alias_type_A)后做了绑定,那么,如果这个时候给alias_A发消息,设备是不会收到消息的,因为在友盟推送后台device-token是和最后登陆的alias_B做绑定的。这个在实际业务场景中也成立,最后一个登录的账号才是这台设备当前真实的用户。
如果不是同一个alias_type, 那么前后两个绑定的alias均生效。举个例子: (alias_A, alias_type_A)先做了绑定,之后是(alias_B, alias_type_B)做了绑定,那么不管是给alias_A发消息,还是给alias_B发消息,设备均能收到消息。因为alias_type变化之后,友盟推送后台确定不了这是同一个用户(eg: 同一个用户使用不同平台的账号登录),还是不同的用户(不同的用户,使用不同的账号登录),友盟只能简单的判定这两个不同alias_type的账号是两个不同的账号。这种场景是需要特别注意的,建议开发者在实际的集成过程中尽量避免这种使用场景。
2. 同一个账号登录多台设备:
这种情况处理起来就比较简单了,即一个alias和多个device-token做绑定。如果给这个alias发消息,我们会给所有和这个alias绑定的设备都去推送消息。

开发者在具体使用过程中,可能会想到Alias做了绑定(addAlias)或者解除(removeAlias)之后,多长时间能在后端生效。 Alias接口,是一个实时的接口,不管是在“测试模式”下,还是在“正式模式”下,都是实时生效的。不过在集成测试阶段,还是建议开发者把手头的设备添加到"测试模式"下的测试设备集合里面,关于“测试模式”的更多介绍,请参考友盟推送“测试模式”介绍。

㈤ 关于Android 消息推送,有什么开源的技术方案

Android push message,其服务器是用了JSP编写,服务器与客户端通讯是通过XML(XMLPP)文件。
首先,下载地址 http://sourceforge.net/projects/androidpn/
我们下载其中的 androidpn-server-0.5.0-bin.zip (18.3 MB) 服务端和androidpn-client-0.5.0.zip(356.1 kB)
客户端。而服务端是在PC上运行,而且用JSP编写。需要安装JAVA,并配置好JAVA_HOME变量。不然运行时
是一闪而过,不能开启服务端。

其次,配置服务端。服务端是在PC上运行,把androidpn-server-0.5.0-bin.zip解压在本地,如:E:\android
\androidpn-server-0.5.0 运行以上目录的\bin\run.bat 来启动服务器。此时cmd窗口一直在运行。别关了。
验证服务器是否成功。浏览器打开 http://127.0.0.1:7070/index.do,出现如下页,表示服务器开启成功。

最后,我们手机端,解压androidpn-client-0.5.0.zip,导入工程到eclipse。打开res/raw/androidpn.properties
文件配置。
[java] view plain
apiKey=1234567890
xmppHost=192.168.0.5
xmppPort=5222

把192.168.0.5修改为10.0.2.2 【在虚拟机中,虚拟机地址为127.0.0.1,主机地址为 10.0.2.2】
运行客户端,还需build path设置包含asmack.jar。
右击此项目(org.androidpn.demoapp.DemoAppActivity)——properties。如图,打开jaca build path,
添加asmack.jar。 然后在模拟器编译运行。自此我们都设置完了。下面演示推送。

㈥ android 友盟消息推送 如何保活

其实这个很简单,第三方推送一般都会用“长连护保”功能来保证消息的到达,以下是该平台推送对长连护保的解释:长连互保,用户设备中任何一个集成过友盟推送的app打开,即使他的app没打开也能启动push service,收到推送。
其他的第三方推送工具,例如极光推送也能实现APP保活的功能,使得开发者可以即时地向其应用程序的用户推送通知或者消息,与用户保持互动,从而有效地提高留存率,提升用户体验。
极光推送是经过考验的大规模 App 推送平台,每天推送消息量级为数百亿条。 开发者集成 SDK 后,可以通过调用 API 推送消息。同时,JPush 提供可视化的 web 端控制台发送通知,统计分析推送效果

㈦ 友盟-推送-Andorid-通过不同的自定义参数打开不同的activity,(通知,消息)

package com.yongtai.o2bra;

import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.support.v4.app.NotificationCompat;
import android.widget.RemoteViews;

import com.umeng.common.message.Log;
import com.umeng.message.UTrack;
import com.umeng.message.UmengBaseIntentService;
import com.umeng.message.entity.UMessage;
import com.yongtai.common.base.Config;
import com.yongtai.o2bra.buy.OrderInfoActivity;
import com.yongtai.o2bra.feedsbra.BarInfoActivity;

import org.android.agoo.client.BaseConstants;
import org.json.JSONObject;

/**
* Developer defined push intent service.
* Remember to call {@link com.umeng.message.PushAgent#setPushIntentServiceClass(Class)}.
*
* @author lucas
*/
public class MyPushIntentService extends UmengBaseIntentService {
private static final String TAG = MyPushIntentService.class.getName();

@Override
protected void onMessage(Context context, Intent intent) {
super.onMessage(context, intent);
try {
String message = intent.getStringExtra(BaseConstants.MESSAGE_BODY);
UMessage msg = new UMessage(new JSONObject(message));
UTrack.getInstance(context).trackMsgClick(msg);
//后台传过来的参数,开发人员可根据type来启动对应的activity,type只自己定义。
//type_id是需要将此参数传给对应的activity,需要传什么都行。
String type =msg.extra.get("type");
String type_id =msg.extra.get("type_id");
Intent intent1=null;
if("proct".equals(type)){
intent1= new Intent(context, BarInfoActivity.class);
intent1.putExtra(Config.INTENT_PARAMS1_SERVICE, type_id);
//启动activity必须加上Flags
intent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
}else if("purchase".equals(type)){
intent1= new Intent(context, OrderInfoActivity.class);
intent1.putExtra(Config.ACTIVITY_ORDER_INFO_TYPE_ID, type_id);
intent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
}
showNotification(context, msg, intent1);
} catch (Exception e) {
Log.e(TAG, e.getMessage());
}
}
// 通知栏显示当前播放信息,利用通知和 PendingIntent来启动对应的activity
public void showNotification(Context context,UMessage msg,Intent intent) {
NotificationManager mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
builder.setAutoCancel(true);
Notification mNotification = builder.build();
mNotification.icon = R.drawable.umeng_push_notification_default_large_icon;//notification通知栏图标
mNotification.defaults |= Notification.DEFAULT_SOUND;
mNotification.defaults |= Notification.DEFAULT_VIBRATE ;
//自定义布局
RemoteViews contentView = new RemoteViews(getPackageName(), R.layout.notification_view);
contentView.setImageViewResource(R.id.notification_large_icon, R.drawable.umeng_push_notification_default_small_icon);
contentView.setTextViewText(R.id.notification_title, msg.title);
contentView.setTextViewText(R.id.notification_text, msg.text);
mNotification.contentView = contentView;
PendingIntent contentIntent = PendingIntent.getActivity(context, 0,
intent, PendingIntent.FLAG_UPDATE_CURRENT);
//notifcation.flags = Notification.FLAG_NO_CLEAR;// 永久在通知栏里
mNotification.flags = Notification.FLAG_AUTO_CANCEL;
//使用自定义下拉视图时,不需要再调用setLatestEventInfo()方法,但是必须定义contentIntent
mNotification.contentIntent = contentIntent;
mNotificationManager.notify(103, mNotification);
}
}

㈧ 友盟-推送-Andorid-“标签(tag)”是什么,如何使用自定义标签

友盟推送支持的筛选维度有“版本”、“渠道”、“地域”、“用户活跃度”等,还有一个叫做“标签”,“标签”是什么含义呢?该如何使用呢? 今天我们和大家聊聊这个话题。

先解释下什么是“标签”:

提问者问到的“标签”其实指的是App开发者结合自有的业务逻辑对该App的终端用户打的“标签”,我们也称tag,这些“标签”是App自己的标签(举个简单的例子,App根据终端用户是否注册,可以给用户打上“注册账号”和“未注册账号”的标签),第三方开发平台是无法直接提供这样的标签的(但是可以开放打标签接口,让App开发者把标签数据回传到第三方服务器上),因为具体的业务逻辑是在App这边的。 第三方开放平台能提供的维度也仅是在用户协议范围内可以收集的字段,比如“版本”、“渠道”、“机型”、“操作系统”等信息,这些维度可以认为是静态的维度,其实App开发者自己也可以收集这些字段,只不过交给第三方平台来做数据收集、存储和计算更为方便,有兴趣的读者可以了解一下友盟推送收集的用户协议字段: 友盟 | 隐私政策。

下面我们给大家提供一些有代表性的垂直领域App结合自有业务逻辑给终端用户打标签的思路,希望对大家有帮助:
体育类App可以根据终端用户看过的节目类型,给终端用户打上“足球”、“篮球”等类目标签。
儿童类App可以根据儿童的年龄分布,给终端用户打上“0~1岁”、“1~3”岁、“3~5”岁之类的年龄结构标签。
电商类App可以根据用户的购买习惯推算出用户性别,给终端用户打上“男”、“女”标签。
餐饮类App可以根据用户的下单记录以及点评,给终端用户打上“川菜”、“粤菜”、“韩国料理”等标签。
……

App自有的标签体系对精细化运营来说是必需的,App运营人员可以根据这些用户标签来做精准推送、广告定向投放、活动邀请等运营活动。既然标签这么有用,接下来我们和大家聊聊如何在友盟推送中使用“标签”维度,顺带也回答了提问者的第二个问题。

再来谈谈如何在友盟推送中使用“标签”:

上文提到过虽然第三方开放平台无法直接给App开发者提供“标签”维度,但是可以开放打标签的接口,让开发者把标签数据回传到第三方服务器上。下面给大家讲讲友盟推送开放接口的形式,以及开发者如何使用开放的接口来把标签数据回传到友盟服务器端:

图中,黄色部分表示友盟推送提供的模块儿,绿色部分部分表示App开发者自己的模块儿。

方式1(推荐方式): App端直接调用友盟推送SDK提供的tag接口,由SDK负责把标签数据回传到友盟后端服务器。 后期tag(标签)的存储、计算等逻辑都由友盟后端服务器来负责。这种方式是推荐的方式,绝大部分开发者都采用这种打tag的方式。SDK端提供的调用接口有如下几个:

mPushAgent.getTagManager().
添加标签
public Result add(String... tags)
删除标签
public Result delete(String... tags)
清除所有标签
public void reset()
获取服务器端的所有标签
public List<String> list()

具体用法请参照我们的集成文档: 友盟消息推送Android文档

方式2: 开发者在自己的服务器上通过调用友盟服务器端提供的开放接口将该标签数据回传到友盟后端服务器,效果和方式1一样。 有这种需求的开发者不是太多,所以我们的文档上没有把这个接口列出来,有需求的开发者可以联系msg-support at umeng dot com来获取这个接口的文档。

通过方式1或者方式2,开发者就把和自己App业务相关的标签属性维度放在友盟平台上了,这样友盟推送间接的提供了“标签”维度,和其它静态维度一样,“标签”可以和这些维度一块儿来使用(App自身业务逻辑结合友盟数据属性),也可以单独来使用(纯App自身业务逻辑),开发者可以利用这些综合维度来做更精准的推送,从而获得更好的推送效果了。关于“精准推送”,感兴趣的读者可以参考我之前写过的一篇文章: 友盟陈漠沙:“精准推送”是怎样炼成的? - 友盟专栏 - 知乎专栏

开发者在使用标签的过程中,可能会碰到这样的问题,就是明明在SDK端已经调用了标签接口,但是在友盟推送后台网站上并没有显示出刚刚打的标签。这里需要和大家解释一下为什么“标签”不能及时展现在我们的网站上,其实还是要区分一下“正式模式”和“测试模式”两种case的,在“测试模式”下,测试设备的标签是及时出现在网站后台的;在“正式模式下”,大概会有5~10分钟的延迟。这是因为数据量规模决定的,测试设备数量少,所以我们能做到实时处理,线上真实设备数据量庞大,计算节点在计算的时候,会有一定的延迟。 所以开发者在集成测试阶段,如果要测试tag功能的话,建议先把测试的设备在“测试模式”下添加为测试设备。关于“测试模式”的更多介绍,请参考友盟推送“测试模式”介绍。

最后,欢迎大家关注友盟消息推送的官方微博账号"友盟推送",我们的官微会定期和大家share一些技术干货。

㈨ 友盟-推送-Andorid-消息推送-打开通知消息进入特定Activity操作

要获取参数的话 只能通过自定义打开行为,重写dealWithCustomAction

在消息推送SDK里,有一个类UmengNotificationClickHandler,负责处理消息的点击事件。 该类主要有四个成员方法:

public void launchApp(Context context, UMessage msg);
public void openUrl(Context context, UMessage msg);
public void openActivity(Context context, UMessage msg);
public void dealWithCustomAction(Context context, UMessage msg);
这四个方法,分别对应于四种打开方式。其中,launchApp、openUrl、openActivity这三个方法已经由消息推送SDK完成,而dealWithCustomAction则只是一个空的方法。 若开发者需要处理自定义行为,则可以重写方法dealWithCustomAction();其中自定义行为的内容,存放在UMessage.custom中。下面是处理自定义行为的代码:

/**
* 该Handler是在BroadcastReceiver中被调用,故
* 如果需启动Activity,需添加Intent.FLAG_ACTIVITY_NEW_TASK
* */
UmengNotificationClickHandler notificationClickHandler = new UmengNotificationClickHandler(){
@Override
public void dealWithCustomAction(Context context, UMessage msg) {
Toast.makeText(context, msg.custom, Toast.LENGTH_LONG).show();
}
};
mPushAgent.setNotificationClickHandler(notificationClickHandler);
注意
以上代码需在 Application 的onCreate() 中调用使用以下接口,而不是在Activity 中调用。如果在Activity中调用此接口,若应用进程关闭, 则设置的接口会无效。 请参考demo 应用代码。
该Handler是在BroadcastReceiver中被调用。因此若需启动Activity,需为Intent添加Flag:Intent.FLAG_ACTIVITY_NEW_TASK,否则无法启动Activity。
若开发者想自己处理打开网页、打开APP、打开Activity,可重写相应的函数来实现。

阅读全文

与友盟推送androiddemo相关的资料

热点内容
压缩软件的图标 浏览:95
卖鞋哪个app是真的 浏览:467
python迭代是累计吗 浏览:417
程序员哪些平台接私活 浏览:173
单片机充电电路原理图 浏览:1000
android软件云服务器地址 浏览:213
如何用服务器做内网穿透服务 浏览:401
oracle加密表空间重置密码 浏览:302
mdk编译后目标文件 浏览:615
老人动手解压 浏览:720
小米sd卡解压 浏览:996
程序员那么可爱陆漓替老袁说情 浏览:28
当女程序员遇见问题 浏览:746
32位编译器什么意思 浏览:355
php多参数函数 浏览:17
通达信板块动作源码 浏览:751
matlab完全自学一本通pdf 浏览:251
php源码本地安装 浏览:961
服务器怎么用不会断电 浏览:303
主从服务器有什么用 浏览:214