Android之集成友盟推送功能

友盟是中国最大的移动开发者服务平台,为移动开发者提供免费的应用统计分析、社交分享、消息推送、自动更新、在线参数、移动推广效果分析、微社区等app开发和运营解决方案。

如何快速集成友盟推送功能:

1. 注册友盟账号

友盟开发者账号的注册地址:http://www.umeng.com/users/sign_up

2. 创建推送应用

首先进入友盟消息推送的应用中心,创建一个应用,链接地址为:http://message.umeng.com/appList

应用创建完成后,点击应用名称进入应用详情页面,进入“应用信息”页面,可以看到应用的AppKey和AppMasterSecret


3. 下载Android SDK

友盟消息推送android SDK下载地址:

http://dev.umeng.com/push/ios/sdk-download

4. 集成开发

参考http://dev.umeng.com/push/android/integration进行集成开发。

4.1 导入SDK所需的jar包

导入jar包的过程中,如果是ADT 17或者以上的版本,只需要将com.umeng.message.lib.jar直接复制到项目的libs下面,这样做之后,ADT能自动找到所有在libs文件夹下的JAR包,把他们加到工程的依赖路径中,并直接显示在Android Dependecies分类下。

切记,右键Properties -> Java Build Path -> Libraries然后点击Add External JARs... 选择指向jar的路径,点击OK,这种方式导入后,会出现异常,具体原因请参考http://blog.csdn.net/luckily01/article/details/8566956

4.2 配置AndroidManifest.xml,添加相应的权限


4.3 添加组件

在application标签下,注意将[应用包名]换成自己的应用的包名:

<receiverandroid:name="com.umeng.message.NotificationProxyBroadcastReceiver"android:exported="false" >
</receiver>
<receiver android:name="com.umeng.message.RegistrationReceiver" ><intent-filter><action android:name="android.net.conn.CONNECTIVITY_CHANGE" /></intent-filter><intent-filter><action android:name="android.intent.action.PACKAGE_REMOVED" /><data android:scheme="package" /></intent-filter><intent-filter><action android:name="android.intent.action.BOOT_COMPLETED" /></intent-filter></receiver>
<receiver android:name="com.umeng.message.UmengBroadcastReceiver" ><intent-filter><action android:name="org.agoo.android.intent.action.RECEIVE" /></intent-filter><intent-filter><action android:name="【应用包名】.intent.action.COMMAND" /></intent-filter><intent-filter><action android:name="org.agoo.android.intent.action.RE_ELECTION_V2" /></intent-filter>
</receiver>
<receiver android:name="com.umeng.message.BootBroadcastReceiver" ><intent-filter><action android:name="android.intent.action.BOOT_COMPLETED" /></intent-filter>
</receiver>
可以根据需要自行设置 android:label 中的服务名 :<serviceandroid:name="com.umeng.message.UmengService"android:label="PushService" android:exported="true" android:process=":pushService_v1" >

<intent-filter><action android:name="【应用包名】.intent.action.START" /></intent-filter><intent-filter><action android:name="【应用包名】.intent.action.COCKROACH" /></intent-filter><intent-filter><action android:name="org.agoo.android.intent.action.PING" /></intent-filter>
</service>
<serviceandroid:name="org.android.agoo.service.ElectionService"android:exported="true"android:process=":pushService_v1" ><intent-filter><action android:name="org.agoo.android.intent.action.ELECTION_V2" /></intent-filter>
</service>
<service android:name="com.umeng.message.UmengIntentService" />
<!-- V1.3.0添加的service,负责下载通知的资源 -->
<service android:name="com.umeng.message.UmengDownloadResourceService" />

4.4 添加AppKey和Umeng Message Secret

<application>标签下:

<meta-dataandroid:name="UMENG_APPKEY"android:value="你的APPKEY" >
</meta-data>
<meta-dataandroid:name="UMENG_MESSAGE_SECRET"android:value="你的Umeng Message Secret" >
</meta-data>

5. 添加代码,编译测试5.1 在应用的主Activity onCreate() 函数中开启推送服务

PushAgent mPushAgent = PushAgent.getInstance(context);
mPushAgent.enable();

5.2 获取设备的Device Token(可选)如果在测试或其他使用场景中,需要获取设备的Device Token,可以使用下面的方法。

String device_token = UmengRegistrar.getRegistrationId(context)

说明

  • Device Token为友盟生成的用于标识设备的id,长度为44位,不能定制和修改。同一台设备上每个应用对应的Device Token不一样。
  • 获取Device Token的代码需要放在mPushAgent.enable();后面,注册成功以后调用才能获得Device Token。
  • 如果返回值为空, 说明设备还没有注册成功, 需要等待几秒钟,同时请确保测试手机网络畅通。
5.3 添加测试设备



Device Token可以通过5.2的步骤获取

5.4 发送测试消息

在测试消息下新建测试消息:


确保测试设备网络畅通后,消息推送成功:


测试成功!


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/294920.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NSValue包装自定义结构体

typedef struct {int year;int month;int day; }Date;void value(){Date date {2013,9,30},//void *代表任何类型的指针//这里要穿结构图的地址&date//根据结构体类型生成对应的描述字符串char* type encode(Date);NSValue *value[NSValue value:&date withO…

HTML手机上图片显示被压扁,在重新调整Web浏览器HTML |时,文本会被压扁CSS

我无法准确地说出你希望它如何在你的问题中发挥作用。如果您希望font-size根据浏览器的视图大小动态更改&#xff0c;则可以使用vw单位(请参阅下面的jsfiddle预览和代码示例)。我使用了你在Pastebin上发布的HTML和CSS&#xff0c;但是我在原始帖子中添加了CSS并进行了编辑。我的…

Win11手机应用大改!全新界面来袭

在 Windows 11 中&#xff0c;应用商店、画图、照片、计算器等系统内置应用都获得了全新的改进&#xff0c;这回终于轮到你的手机应用了。在今年 9 月的微软 Windows 11 硬件暨全新 Surface 设备发布会上&#xff0c;微软曾简要地展示了 Windows 11 内置应用 Your Phone&#x…

标记为可序列化

序列化是指将对象实例的状态存储到存储媒体的过程。在此过程中&#xff0c;先将对象的公共字段和私有字段以及类的名称&#xff08;包括类所在的程序集&#xff09;转换为字节流&#xff0c;然后再把字节流写入数据流。在随后对对象进行反序列化时&#xff0c;将创建出与原对象…

serialization机制

首先说明一下序列化的知识&#xff1a; java中的序列化(serialization)机制能够将一个实例对象的状态信息写入到一个字节流中&#xff0c;使其可以通过socket进行传输、或者持久化存储到数据库或文件系统中&#xff1b;然后在需要的时候&#xff0c;可以根据字节流中的信息来重…

java2的7次方怎么表示_静态市盈率要怎么看?

静态市盈率是估值一个公司质地的指标&#xff0c;同时它也就是大家常说的市盈率。它体现的是一个企业按照目前的盈利水平&#xff0c;我们买入后需要多长时间才能回本。那么静态市盈率高好还是低好呢&#xff1f;静态市盈率低好&#xff0c;高就意味着该股高估了。静态市盈率是…

中国科幻扛鼎之作,原来真的不止刘慈欣

▲ 点击查看50年前的某天&#xff0c;一个小孩和一群大人一起仰望着晴朗的天空&#xff0c;看着中国第一颗人造卫星“东方红一号”&#xff0c;默默地担心它会撞到其他星星。而这份小小的担心&#xff0c;成了他后来开始创造科幻的动力和梦想。这个仰望晴空的小孩叫刘慈欣。如果…

Android之screenOrientation属性

在开发android的应用中,有时候需要限制横竖屏切换。只需要在AndroidManifest.xml文件中加入android:screenOrientation属性限制。 android:screenOrientation="landscape"是限制此页面横屏显示,android:screenOrientation="portrait"是限制此页面数竖屏显…

ubuntu make menuconfig error

主机环境&#xff1a;ubuntu --------------------------------------------------------------在ubuntu系统中&#xff0c;要编译内核&#xff0c;还需要安装一系列相应的工具才行。这篇文章&#xff0c;正是针对这一过程的一次记录&#xff0c;目标是可以通过 make menuconfi…

程学旗 计算机,徐明伟-青年科学家奖-中国计算机学会

2010CCF青年科学家奖获奖者徐明伟 教授清华大学分别于1994年和1998年在清华大学计算机科学与技术系获工学学士和工学博士学位。现为清华大学计算机系教授&#xff0c;博士生导师&#xff0c;网络所所长&#xff0c;计算机学会YOCSEF AC委员&#xff0c;中国通信标准化协会技术管…

.net6给winform带来的新功能

首先简化了Program文件&#xff0c;引入了全局命名空间&#xff0c;但顶级语句由于Main函数的特性[STAThread]没有引用进来。namespace WinFormsDemo {internal static class Program{/// <summary>/// The main entry point for the application./// </summary>[…

男生的哪个“不要”是真的不要?

1 每天一个被炒小技巧&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼2 今天你能接到水算我输&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼3 如何形容自己没钱&#xff1f;&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼4 猜中了开头没猜中结…

Git之如何解决Error:pathspec ‘/layout/radar_chart.xml‘ did not match any file(s) known to

不废话&#xff0c;先爆错误图片 问题产生原因&#xff1a; 我把android studio里面的项目提交到github里面的时候&#xff0c;出现了了error: pathspec app/src/main/res/layout/radar_chart.xml did not match any file(s) known to git.&#xff0c;因为我一开始新建了一个文…

江诗丹顿geneve系列_江诗丹顿的另一面

江诗丹顿在售表款目录里&#xff0c;不算阁楼工匠定制系列&#xff0c;你猜最贵的是哪一款&#xff1f;​答案不是包含三问、万年历和陀飞轮功能的传袭系列超卓复杂腕表&#xff0c;而是一枚具有简单时分功能的高级珠宝表款。打开江诗丹顿的官方微信公众号&#xff0c;进入微信…

[c语言]运算符的优先级与结合性

c语言中运算符的优先级和结合性常常被人混淆一谈&#xff0c;本文目的在于简单谈谈两者的区别。本文举几个简单的例子说明&#xff0c;这些运算符也特别常用。 首先要明白的是&#xff1a;优先级决定表达式中各种不同的运算符起作用的优先次序&#xff1b;而结合性则在相邻的运…

学计算机所需要的英语单词,学计算机最少要懂的英语单词是什么

PC&#xff1a;个人计算机Personal ComputerCPU&#xff1a;中央处理器Central Processing UnitCPU Fan&#xff1a;中央处理器的“散热器”(Fan)MB&#xff1a;主机板MotherBoardRAM&#xff1a;内存Random Access Memory,以PC-代号划分规格,如PC-133,PC-1066,PC-2700HDD&…

程序内存一直在泄漏,原来是异步死循环了 !

一&#xff1a;背景 1. 讲故事上个月有位朋友找到我&#xff0c;说他的程序出现了内存泄漏&#xff0c;不知道如何进一步分析&#xff0c;截图如下&#xff1a;朋友这段话已经说的非常言简意赅了&#xff0c;那就上 windbg 说话吧。二&#xff1a;Windbg 分析 1. 到底是哪一方面…

每天一个linux命令(1):ls命令

ls命令是linux下最常用的命令。ls命令就是list的缩写缺省下ls用来打印出当前目录的清单如果ls指定其他目录那么就会显示指定目录里的文件及文件夹清单。 通过ls 命令不仅可以查看linux文件夹包含的文件而且可以查看文件权限(包括目录、文件夹、文件权限)查看目录信息…

太巧了!学霸夫妻携手进入武大读博,两人的硕士导师也是一对夫妻

全世界只有3.14 % 的人关注了爆炸吧知识本文募格学术撰写。参考来源&#xff1a;湖北日报、双一流大学网、募格学术此前报道等科研人的爱情是什么样子&#xff1f;或许是在学术的路上他们相识相知&#xff0c;往后也将共同拼搏&#xff0c;在科研领域擦出更多火花~前段时间&…

TOMCAT常用优化

Tomcat的性能&#xff0c;对比Weblogic或者Websphere&#xff0c;自然是差了不少。但是Weblogic或者Websphere的价格都比较昂贵&#xff0c;一些创业级网站恐怕没有能力支付&#xff0c;毕竟钱要用在刀刃上。免费开源的Tomcat&#xff0c;对付一般的网站&#xff0c;还是够用的…