❶ android 友盟推送 3.06配置清单怎么配置
总体来说,友盟里面的东西还是不错的,这段时间,一直在用友盟,感触最深的就是 做分享的时候,有的Android机型是不可以的分享的,直接报错,我用的是友盟的4.3 有一部手机是Android5.0的 当分享sina时 报错 找了各种资料 最后改动了一个文件类,同事帮忙解决了 ( ^_^ ) 有一个华为手机 分享QQ空间 直接手机无响应,这是个别的手机,方正Android机型太多了 太多奇葩了 有的人可能会说用ShareSDK 我感觉不错用哪个第三方 ,遇到问题了都要解决的 我们做这个项目之前用过推送和更新版本,所以直接用了友盟分享,总之 还是不错的。
配置友盟权限和方法
[html] view plain print?
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_LOGS" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<!-- Permission for Unit Test -->
<uses-permission android:name="android.permission.GET_TASKS"
❷ android 友盟消息推送 如何保活
其实这个很简单,第三方推送一般都会用“长连护保”功能来保证消息的到达,以下是该平台推送对长连护保的解释:长连互保,用户设备中任何一个集成过友盟推送的app打开,即使他的app没打开也能启动push service,收到推送。❸ android 友盟推送 未读消息怎么做
JPush SDK 收到推送,通过广播的方式,转发给开发者App,这样开发者就可以灵活地进行处理。 这个动作不是必须的。用户有需要才定义 Receiver 类来处理 SDK过来的广播。 如果不做这个动作,即不写自定义 Receiver,也不在 AndroidManifest.xml 里配置这个 Receiver,则默认的行为是: 接收到推送的自定义消息,则没有被处理 可以正常收到通知,用户点击打开应用主界面 接受广播 如果全部类型的广播都接收,则需要在 AndroidManifest.xml 里添加如下的配置信息: <receiver android:name="Your Receiver" android:enabled="true"> <intent-filter> <action android:name="cn.jpush.android.intent.REGISTRATION" /> <action android:name="cn.jpush.android.intent.MESSAGE_RECEIVED" /> <action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED" /> <action android:name="cn.jpush.android.intent.NOTIFICATION_OPENED" /> <category android:name="You package Name" /> </intent-filter> </receiver> 每个 Receiver action 详细解释如下。 Action - cn.jpush.android.intent.REGISTRATION SDK 向 JPush Server 注册所得到的注册 ID 。 一般来说,可不处理此广播信息。 要深入地集成极光推送,开发者想要自己保存App用户与JPush 用户关系时,则接受此广播,取得 Registration ID 并保存与App uid 的关系到开发者自己的应用服务器上。 使用极光推送提供的别名与标签功能,是更加简单轻便的绑定App用户与JPush用户的方式,请参考文档:别名与标签使用教程。 Intent 参数 JPushInterface.EXTRA_REGISTRATION_ID SDK 向 JPush Server 注册所得到的注册 全局唯一的 ID ,可以通过此 ID 向对应的客户端发送消息和通知。 Bundle bundle = intent.getExtras(); String title = bundle.getString(JPushInterface.EXTRA_REGISTRATION_ID); Action - cn.jpush.android.intent.MESSAGE_RECEIVED 收到了自定义消息 Push 。 SDK 对自定义消息,只是传递,不会有任何界面上的展示。 如果开发者想推送自定义消息 Push,则需要在 AndroidManifest.xml 里配置此 Receiver action,并且在自己写的 BroadcastReceiver 里接收处理。 Intent 参数 JPushInterface.EXTRA_TITLE 保存服务器推送下来的消息的标题。 对应 API 消息内容的 title 字段。 对应 Portal 推送消息界面上的“标题”字段(可选). Bundle bundle = intent.getExtras(); String title = bundle.getString(JPushInterface.EXTRA_TITLE); JPushInterface.EXTRA_MESSAGE 保存服务器推送下来的消息内容。 对应 API 消息内容的 message 字段。 对应 Portal 推送消息界面上的"消息内容”字段。 Bundle bundle = intent.getExtras(); String message = bundle.getString(JPushInterface.EXTRA_MESSAGE); JPushInterface.EXTRA_EXTRA 保存服务器推送下来的附加字段。这是个 JSON 字符串。 对应 API 消息内容的 extras 字段。 对应 Portal 推送消息界面上的“自定义内容”。 Bundle bundle = intent.getExtras(); String extras = bundle.getString(JPushInterface.EXTRA_EXTRA); JPushInterface.EXTRA_CONTENT_TYPE 保存服务器推送下来的内容类型。 对应 API 消息内容的 content_type 字段。 Bundle bundle = intent.getExtras(); String type = bundle.getString(JPushInterface.EXTRA_CONTENT_TYPE); JPushInterface.EXTRA_RICHPUSH_FILE_PATH SDK 1.4.0 以上版本支持。 富媒体通消息推送下载后的文件路径和文件名。 Bundle bundle = intent.getExtras(); String file = bundle.getString(JPushInterface.EXTRA_RICHPUSH_FILE_PATH); JPushInterface.EXTRA_MSG_ID SDK 1.6.1 以上版本支持。 唯一标识消息的 ID, 可用于上报统计等。 Bundle bundle = intent.getExtras(); String file = bundle.getString(JPushInterface.EXTRA_MSG_ID); Action - cn.jpush.android.intent.NOTIFICATION_RECEIVED 收到了通知 Push。 如果通知的内容为空,则在通知栏上不会展示通知。但是,这个广播 Intent 还是会有。开发者可以取到通知内容外的其他信息。 Intent 参数 JPushInterface.EXTRA_NOTIFICATION_TITLE 保存服务器推送下来的通知的标题。 对应 API 通知内容的 n_title 字段。 对应 Portal 推送通知界面上的“通知标题”字段。 Bundle bundle = intent.getExtras(); String title = bundle.getString(JPushInterface.EXTRA_NOTIFICATION_TITLE); JPushInterface.EXTRA_ALERT 保存服务器推送下来的通知内容。 对应 API 通知内容的 n_content 字段。 对应 Portal 推送通知界面上的“通知内容”字段。 Bundle bundle = intent.getExtras(); String content = bundle.getString(JPushInterface.EXTRA_ALERT); JPushInterface.EXTRA_EXTRA SDK 1.2.9 以上版本支持。 保存服务器推送下来的附加字段。这是个 JSON 字符串。 对应 API 通知内容的 n_extras 字段。 对应 Portal 推送通知界面上的“自定义内容”字段。 Bundle bundle = intent.getExtras(); String extras = bundle.getString(JPushInterface.EXTRA_EXTRA); JPushInterface.EXTRA_NOTIFICATION_ID SDK 1.3.5 以上版本支持。 通知栏的Notification ID,可以用于清除Notification Bundle bundle = intent.getExtras(); int notificationId = bundle.getInt(JPushInterface.EXTRA_NOTIFICATION_ID); JPushInterface.EXTRA_CONTENT_TYPE 保存服务器推送下来的内容类型。 对应 API 消息内容的 content_type 字段。 Portal 上暂时未提供输入字段。 Bundle bundle = intent.getExtras(); String type = bundle.getString(JPushInterface.EXTRA_CONTENT_TYPE); JPushInterface.EXTRA_RICHPUSH_HTML_PATH SDK 1.4.0 以上版本支持。 富媒体通知推送下载的HTML的文件路径,用于展现WebView。 Bundle bundle = intent.getExtras(); String fileHtml = bundle.getString(JPushInterface.EXTRA_RICHPUSH_HTML_PATH); JPushInterface.EXTRA_RICHPUSH_HTML_RES SDK 1.4.0 以上版本支持。 富媒体通知推送下载的图片资源的文件名,多个文件名用 “,” 分开。 与 “JPushInterface.EXTRA_RICHPUSH_HTML_PATH” 位于同一个路径。 Bundle bundle = intent.getExtras(); String fileStr = bundle.getString(JPushInterface.EXTRA_RICHPUSH_HTML_RES); String[] fileNames = fileStr.spilt(","); JPushInterface.EXTRA_MSG_ID SDK 1.6.1 以上版本支持。 唯一标识通知消息的 ID, 可用于上报统计等。 Bundle bundle = intent.getExtras(); String file = bundle.getString(JPushInterface.EXTRA_MSG_ID); Action - cn.jpush.android.intent.NOTIFICATION_OPENED 用户点击了通知。 一般情况下,用户不需要配置此 receiver action。 如果开发者在 AndroidManifest.xml 里未配置此 receiver action,那么,SDK 会默认打开应用程序的主 Activity,相当于用户点击桌面图标的效果。 如果开发者在 AndroidManifest.xml 里配置了此 receiver action,那么,当用户点击通知时,SDK 不会做动作。开发者应该在自己写的 BroadcastReceiver 类里处理,比如打开某 Activity 。 Intent 参数 JPushInterface.EXTRA_NOTIFICATION_TITLE 保存服务器推送下来的通知的标题。 对应 API 通知内容的 n_title 字段。 对应 Portal 推送通知界面上的“通知标题”字段。 Bundle bundle = intent.getExtras(); String title = bundle.getString(JPushInterface.EXTRA_NOTIFICATION_TITLE); JPushInterface.EXTRA_ALERT 保存服务器推送下来的通知内容。 对应 API 通知内容的n_content字段。 对应 Portal 推送通知界面上的“通知内容”字段。 Bundle bundle = intent.getExtras(); String content = bundle.getString(JPushInterface.EXTRA_ALERT); JPushInterface.EXTRA_EXTRA SDK 1.2.9 以上版本支持。 保存服务器推送下来的附加字段。这是个 JSON 字符串。 对应 API 消息内容的 n_extras 字段。 对应 Portal 推送通知界面上的“自定义内容”字段。 Bundle bundle = intent.getExtras(); String type = bundle.getString(JPushInterface.EXTRA_EXTRA); JPushInterface.EXTRA_NOTIFICATION_ID SDK 1.3.5 以上版本支持。 通知栏的Notification ID,可以用于清除Notification Bundle bundle = intent.getExtras(); int notificationId = bundle.getInt(JPushInterface.EXTRA_NOTIFICATION_ID JPushInterface.EXTRA_MSG_ID SDK 1.6.1 以上版本支持。 唯一标识调整消息的 ID, 可用于上报统计等。 Bundle bundle = intent.getExtras(); String file = bundle.getString(JPushInterface.EXTRA_MSG_ID); 代码示例 public void onReceive(Context context, Intent intent) { Bundle bundle = intent.getExtras(); Log.d(TAG, "onReceive - " + intent.getAction()); if (JPushInterface.ACTION_REGISTRATION_ID.equals(intent.getAction())) { } else if (JPushInterface.ACTION_MESSAGE_RECEIVED.equals(intent.getAction())) { System.out.println("收到了自定义消息。消息内容是:" + bundle.getString(JPushInterface.EXTRA_MESSAGE)); // 自定义消息不会展示在通知栏,完全要开发者写代码去处理 } else if (JPushInterface.ACTION_NOTIFICATION_RECEIVED.equals(intent.getAction())) { System.out.println("收到了通知"); // 在这里可以做些统计,或者做些其他工作 } else if (JPushInterface.ACTION_NOTIFICATION_OPENED.equals(intent.getAction())) { System.out.println("用户点击打开了通知"); // 在这里可以自己写代码去定义用户点击后的行为 Intent i = new Intent(context, TestActivity.class); //自定义打开的界面 i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(i); } else { Log.d(TAG, "Unhandled intent - " + intent.getAction()); } }
❹ 求Android友盟sdk统计的简单demo程序
http://dev.umeng.com/analytics/android-doc/integration 下载地址
❺ 友盟推送android java端的代码怎么使用
最好的方法,研读官方提供的Demo,这里说的Java端应该是前端,即Android App端,在应用程序启动的时候,开启推送功能,同时在清单文件移植Demo提供的一些内容,测试几遍就差不多了。。。
❻ 友盟-推送-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 收到了消息,何为没有展示到通知栏
第一,支持多维度用户分群,帮助开发者将不同用户按照不同特征分群,从而为不同分群的用户推送最合适的内容,大幅度提升消息打开率和用户满意度。
第二,自由选择发送内容。开发者可以选择发送通知或者自定义消息,自主决定发送内容是否被展示给用户。开发者可以自由配置用户查看消息后的操作,支持打开 APP指定页面、打开指定网页以及其它自定义行为。
第三,灵活接入。支持开发者通过Web 端操作或者 API接入,满足不同场景下的推送需求。Web端后台操作:开发者可以在 Web后台人工操作,按多个维度筛选用户并群发消息。
第四,支持API接入方式:开发者可以通过 API对接友盟服务器,自动化的推送消息。
最后,提下产品的优势:1)优质的服务质量。实现了同一设备多 APP共享一个长连接、智能心跳等优化方案。消息发送速度快,长连接稳定,设备能耗低。2)提供多种个性化功能,确保用户体验最优。最关键的是,目前一切,并且没有任何收费的计划!
❽ android 友盟推送为什么卸载重装还是能收到推送
appdelegate里有个方法,-(void)application:(UIApplication*):(NSDictionary*)userInfo收到推送消息后就会调用,你在这里读取消息,再以通知的形式发送到你要处理的指定页面即可
❾ 如何使用友盟 Cocos2d-x 分享组件实现 Android/iOS 分享功能
首先我简单介绍一下组件压缩包的组成
Cocos2dx
实现Cocos2d-x中跨平台分享功能,需拷贝到您项目的Classes文件夹中;
Platforms
原生的Android和iOS社会化组件SDK,需要您将库和资源拷贝到对应平台的项目中;
doc
组件的集成文档;
Umeng_Cocos2dx_Demo_V1.0
Android部分的demo文件,可以安装在手机上看一下简单的分享效果和样式
Cocos2d-x虽然是一个跨平台的引擎,但是对于Android和IOS平台来说,具体的集成方式还是有一定的区别,这里分别介绍Android和IOS平台集成中不同的地方,然后再集中介绍跨平台通用的部分。
Android平台集成步骤:
步骤一:
下载Cocos2d-x组件(下载地址) 并且将jar包添加到build path 路径下,将res资源文件夹加入到你工程对应资源文件下。将Platforms/Android/controller目录下的com文件夹拷贝到您的Cocos2d-x项目Android平台的src目录下,并且在jni/Android.mk中的LOCAL_SRC_FILES下添加如下配置 (注意格式,否则会编译出错) :
../../Classes/Cocos2dx/Android/CCUMSocialController.cpp \
../../Classes/Cocos2dx/ShareButton/UMShareButton.cpp \
../../Classes/Cocos2dx/Common/CCUMSocialSDK.cpp
步骤二:
在Cocos2dxActivity子类的onCreate方法下添加如下代码,用来完成初始化步骤
// this为Cocos2dxActivity类型, 参数2为描述符,可随意修改.
CCUMSocialController.initSocialSDK(this, "com.umeng.social.share");
步骤三:
在代码中覆写Cocos2dxActivity子类的onActivityResult方法,用来实现回调方法。在onActivityResult添加如下代码 :
// 授权回调
CCUMSocialController.onActivityResult(requestCode, resultCode, data);
super.onActivityResult(requestCode, resultCode, data);
iOS平台集成步骤:
步骤一:
解压SDK压缩包,将Platforms/iOS文件夹和Cocos2dx文件夹拖入工程目录,并删除Cocos2dx/Android文件夹,添加后应该是这个效果:
步骤二:
添加系统需要的framework
Security.framework //用于系统加密处理
libiconv.dylib //QQ互联的库文件
SystemConfiguration.framework //QQ互联需要的framework
CoreGraphics.framework //QQ互联需要的framework
Social.framework //分享组件需要的framework,如果不使用twitter则不需要
libsqlite3.dylib //QQ互联需要的framework
libstdc++.dylib //C++的库文件
CoreTelephony.framework //QQ互联需要的framework
libz.dylib //QQ互联需要的framework
Accounts.framework //系统需要的framework,如果不使用twitter则不需要
步骤三:
实现系统的回调方法,在Xcode工程中的ios文件夹下的AppController.mm文件中加入下面的代码:
#import "UMSocial.h"
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
return [UMSocialSnsService handleOpenURL:url];
}
完成了上述准备工作之后,就可以开始正式的分享步骤了,友盟提供了多种分享样式,有精力的开发者可以使用底层接口,可以完全自由定制分享界面和样式,不过相信大部分开发者们使用第三方插件的初衷都是为了节省精力,所以这里就只介绍使用默认分享界面的方法,有更多需求的开发者们可以自己探索自定义界面接口部分。
步骤一:加入系统需要的头文件
// 授权回调
#include "Cocos2dx/Common/CCUMSocialSDK.h"
#include "Cocos2dx/ShareButton/UMShareButton.h"
// 使用友盟命令空间
USING_NS_UM_SOCIAL;
// ...... 代码省略
// HelloWorld为cocos2d::CCLayer的子类
bool HelloWorld::init()
{
//////////////////////////////
// 1. super init first
if ( !CCLayer::init() )
{
return false;
}
}
步骤二:分享按钮的创建
// 创建分享按钮, 参数1为按钮正常情况下的图片, 参数2为按钮选中时的图片,参数3为友盟appkey, 参数4为分享回调
UMShareButton *shareButton = UMShareButton::create("shareNormal.png","shareSelected.png", "你的友盟appkey", share_selector(shareCallback)) ;
步骤三:设置分享平台及内容
// 显示在友盟分享面板上的平台
vector
* platforms = new vector
();
platforms->push_back(SINA);
platforms->push_back(RENREN) ;
platforms->push_back(DOUBAN) ;
platforms->push_back(QZONE) ;
platforms->push_back(QQ) ;
// 设置友盟分享面板上显示的平台
shareButton->setPlatforms(platforms);
// 设置文本分享内容
shareButton->setShareContent("umeng social Cocos2d-x sdk.") ;
// 设置要分享的图片, 图片支持本地图片和url图片, 但是url图片必须以http://或者https://开头
shareButton->setShareImage("/sdcard/header.jpeg") ;
// 设置按钮的位置
shareButton->setPosition(ccp(150, 180));
// 然后开发者需要将该按钮添加到游戏场景中
CCMenu* pMenu = CCMenu::create(shareButton, NULL);
pMenu->setPosition(CCPointZero);
this->addChild(pMenu, 1);
// ********************** 设置平台信息 ***************************
// CCUMSocialSDK *sdk = shareButton->getSocialSDK();
// sdk->setQQAppIdAndAppKey("设置QQ的app id", "appkey");
// sdk->setWeiXinAppId("设置微信和朋友圈的app id");
// sdk->setYiXinAppKey("设置易信和易信朋友圈的app id");
// sdk->setLaiwangAppInfo("设置来往和来往动态的app id",
// "设置来往和来往动态的app key", "我的应用名");
// sdk->setFacebookAppId("你的facebook appid");
// 设置用户点击一条图文分享时用户跳转到的目标页面, 一般为app主页或者下载页面
// sdk->setTargetUrl(" ");
// 打开或者关闭log
// sdk->setLogEnable(true) ;
// ********************** END ***************************
集成到这一步就完成了,如果没有异常,应该会出现下面的界面,这说明你已经成功实现了集成工作。
❿ 友盟-推送-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,可重写相应的函数来实现。