友盟推送里面的Alias怎么用?可以理解成账号吗?

友盟推送里面的Alias怎么用?可以理解成账号吗?

我们的App有自己的账号体系的,想在每次用户登陆的时候,给用户发一个欢迎消息。 看了一下友盟推送,里面有一个概念叫做Alias(别名),但是官方文档写着Alias是和设备绑定的,感觉Alias算不上是严格意义的账号。不知道其它集成过友盟推送的兄弟们是否有类似的需求,是否可以通过友盟推送提供的Alias功能来满足我们的需求?

作者:沙漠
链接:http://www.zhihu.com/question/31882775/answer/54254062
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

分两部分回答你的问题吧,第一部分是关于你问题中需求的理解;第二部分重点来讲讲友盟推送是如何设计Alias,以及使用Alias的Best Practice:

你的需求是每次用户登陆的时候,给用户发欢迎消息。如果欢迎消息固定的话,那么你完全可以在App本地实现这个逻辑(实现起来也很简单),而非是采用消息推送的方式来实现。如果欢迎消息要做一些个性化欢迎用语,或者是在你们服务器端来控制欢迎语的话,这种情况下使用推送才是有意义的。根据你的描述,感觉你的需求是想做个性化推送。

接下来重点介绍一下友盟推送在产品层面设计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来做个性化推送了。比如提问中想实现的用户登陆个性化推送,可以在用户第一次登陆的时候(这个很好判断),开发者在App中调用Alias绑定接口做绑定;之后每次用户登陆的时候,会在开发者的服务器端触发一次登陆事件,开发者在自己的服务器端根据Alias做“欢迎语”的发送即可。由此来看,Alias的作用是能让开发者结合自有的账号(此处需要理解成广义的账号)体系,来做更个性化、精细化的推送。下图是一个简化的Alias架构,帮助大家理解Alias的用法:

<img src="//pic.ikafan.com/imgp/L3Byb3h5L2h0dHBzL3BpYzQuemhpbWcuY29tL2QxNGMyMWY0ZDRjMmJjZTYyMjE1MzEyYWE1NWY5MzBiX2IuanBn.jpg" data-rawwidth="918" data-rawheight="767" class="origin_image zh-lightbox-thumb" width="918" data-original="https://pic4.zhimg.com/d14c21f4d4c2bce62215312aa55f930b_r.jpg">
关于Alias的相关接口,我们的友盟消息推送Android文档提供了非常丰富的接口供开发者调用:

添加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绑定的设备都去推送消息。

http://www.zhihu.com/question/31882775

时间: 2024-12-17 00:18:28

友盟推送里面的Alias怎么用?可以理解成账号吗?的相关文章

实现友盟推送消息的完全自定义处理

1,下面的前提是必须申请了友盟且有app key 2,集成友盟SDK  参看官方文档http://dev.umeng.com/push/android/integration#1 3,若开发者需要实现对消息的完全自定义处理,则可以继承 UmengBaseIntentService, 实现自己的Service来完全控制达到消息的处理.     1,实现一个类,继承 UmengBaseIntentService, 重写onMessage(Context context, Intent intent)

使用极光/友盟推送,APP进程杀死后为什么收不到推送(转)

为什么会存在这样的 问题,刚开始的时候我也搞不清楚,之前用极光的时候杀死程序后也会收到推送,但最近重新再去集成时就完全不好使了,这我就纳闷了,虽然Google在高版本上的android上面不建议线程守护,所以将进程有关的Service都杀掉了,但旧版本还是有这个功能的啊 !真尼玛,后来猜测估计是因为要适配6.0所以低版本的一些代码就删除了,造成低版本的也不行了,接下来分析一下这个问题. 首先我们把Android分为两类机型,一种是原生态的Android系统,比如Nexus,三星等机型,一种是深度

《友盟推送调到指定界面》

给大家讲一点常识,友盟推送分生产环境和开发环境.用手机刷上去的就是开发环境, 发布到苹果商店就是生产环境,没发布前怎么模拟呢, 用普通账号打的ad hoc 包, 用企业账号打的ad hoc 包或者enterprise包都可以测试生产环境. 开发环境下, 你把APP删掉,重新调试上来,就会生成一个新的device_token了! 收到通知的时候APP的状态可能是未启动.前台活跃(任何界面).后台等三种. 未启动时,点击通知栏启动App, 会在didFinishLaunchingWithOption

友盟推送 .NET (C#) 服务端 SDK rest api 调用库

友盟推送 .NET SDK rest api 介绍 该版本是基于友盟推送2.3版本封装的,网上查询了下发现没有.NET版本的调用库,官方也没有封装.NET的版本,只有python.java.php版本,您这又让.NET情何以堪啊,故分享一个简单易调用的版本分享给大家,本次封装的代码相比我封装的[信鸽推送] 简单很多,而且自由度很高,参数基本都是直接转json的实体,,需要根据友盟REST API   http://dev.umeng.com/push/android/api-doc 去具体赋值,

iOS集成友盟推送

之前有写过利用Python自己写一个推送服务器, 今天说下如果集成友盟的推送服务 在这之前我们需要做一些准备动作 #1. 注册一个App ID #2. Enable Push NotificationSerivice, 并创建和下载开发/发布推送证书 #3. 安装推送证书, 然后把推送证书到处为p12文件 #4. 注意友盟账号 #5. 创建一个推送应用, 并上传推送证书的p12文件和填写密码 #6. 下载SDK, 添加到项目中 在AppDelegatez #import "UMessage.h&

AppDelegate减负之常用三方封装 - 友盟推送篇

之前分享过集成友盟推送的方法, 需要的朋友可以查看一下链接: http://www.cnblogs.com/zhouxihi/p/6533058.html 一般开发中我们比较多使用的三方有友盟推送, 友盟分享, 友盟登录, 微信支付, 支付宝支付, 融云等等...等等... 光集成一个友盟推送就要好几十行代码, 如果多集成几个AppDelegate就会变得臃肿不堪, 也降低了可读性 为了解决这个问题, 目前想到以Category的方式给AppDelegate添加新的类别去完成这些三方集成 先以友

友盟推送

一.感受 下面讲下我对推送这个功能在IOS下的感受,这个算是我做了服务端的功能和手机端的功能后的一个体会吧, 这功能在IOS上是多少给我带来了点鸡肋的感觉,首先很多时候收到推送有延时现象,还有如果连续推送两条消息给一个Iphone手机,如果遇到延时这个问题,那么第一条推送就会被覆盖.(这里我用的是友盟的推送,这个推送暂时感觉还不错,大多数推送能及时收到,至少我暂时测试是如此,所以我这里也选择了它,以前遇到过两小时后才到的第三方推送.....甚至根本就收不到.),再一个,即使延迟这个问题解决了,关

友盟推送(二)

上一篇友盟推送一,我们获取到了Device_Token,可以在友盟的后台推送消息到指定的手机.下面就介绍添加标签,删除标签 iOS 消息推送 (Message) SDK使用指南 本文档包括: 介绍 基本功能集成指南 高级功能集成指南 测试与调试 技术支持 1. 介绍 友盟消息推送组件帮助您实时的推送消息给用户. 下载的压缩包中将包括以下内容: 文件名称 介绍 UMessage_Sdk_Introductions.html 该文件介绍如何使用友盟消息推送SDK UMessage_Sdk_Relea

Android集成友盟推送功能

友盟是中国最大的移动开发者服务平台,为移动开发者提供免费的应用统计分析.社交分享.消息推送.自动更新.在线参数.移动推广效果分析.微社区等app开发和运营解决方案. 如何快速集成友盟推送功能: 1. 注册友盟账号 友盟开发者账号的注册地址:http://www.umeng.com/users/sign_up 2. 创建推送应用 首先进入友盟消息推送的应用中心,创建一个应用,链接地址为:http://message.umeng.com/appList. 应用创建完成后,点击应用名称进入应用详情页面