android 极光推送关闭 为什么首页必须加onresume

为什么需要别名与标签推送消息时,要指定推送的对象:全部,某一个人,或者某一群人。全部很好办,针对某应用“群发”就好了。Portal与API都支持向指定的 appKey 群发消息。要指定向某一个特定的人,或者某一群特定的人,则相对复杂。因为对于 JPush 来说,某一个人就是一个注册ID,这个注册ID与开发者App没有任何关系,或者说对开发者App是没有意义的。如果要对开发者App有意义的某个特定的用户推送消息,则需要:把 JPush 注册用户与开发者App 用户绑定起来。这个绑定有两个基本思路:把绑定关系保存到 JPush 服务器端把绑定关系保存到开发者应用服务器中前者,就是这里要说到的:别名与标签的功能。这个机制简单易用,适用于大多数开发者。后者,则是 JPush 提供的另外一套 RegistrationID 机制。这套机制开发者需要有应用服务器来维护绑定关系,不适用于普通开发者。Android SDK r1.6.0 版本开始支持。使用方式别名与标签的机制,其工作方式是:客户端开发者App调用 setAliasAndTags API 来设置关系JPush SDK 把该关系设置保存到 JPush Server 上在服务器端推送消息时,指定向之前设置过的别名或者标签推送SDK 支持的 setAliasAndTags 请参考相应的文档:使用过程中有几个点做特别说明:App 调用 SDK setAliasAndTags API 时,r1.5.0 版本提供了 Callback 来返回设置状态。如果返回 6002 (超时)则建议重试。老版本没有提供 Callback 无设置状态返回,从而没有机制确定一定成功。建议升级到新版本。Portal 上推送或者 API 调用向别名或者标签推送时,可能会报错:不存在推送目标用户。该报错表明,JPush Server 上还没有针对你所推送的别名或者标签的用户绑定关系,所以没有推送目标。这时请开发者检查确认,开发者App是否正确地调用了 setAliasAndTags API,以及调用时是否网络不好,JPush SDK 暂时未能保存成功。使用别名用于给某特定用户推送消息。所谓别名,可以近似地被认为,是用户帐号里的昵称。使用标签用于给某一群人推送消息。标签类似于博客里为文章打上 tag ,即为某资源分类。动态标签JPush 提供的设置标签的 API 是在客户端的。开发者如何做到在自己的服务器端动态去设置分组呢? 比如一个企业OA系统,经常需要去变更部门人员分组。以下是大概的思路:设计一种自定义消息格式(业务协议),App解析后可以调用 JPush SDK setAliasAndTags API 来重新设置标签(分组)例:{&action&:&resetTags&, &newTags&:[&dep_level_1&:&A公司&, &dep_level_2&:&技术部&, &dep_level_3&:&Android开发组&, &address&:&深圳&, &lang&:&zh&]}要动态设置分组时,推送这条自定义消息给指定的用户使用别名的机制,推送到指定的用户。客户端App 调用 JPush SDK API 来设置新的标签参考Be awesome!
极光推送是给客户端ios或者android推送消息的工具。
只要在客户端嵌入sdk,同时配合服务器端来使用就可以了。
客户端可以给每个用户注册一个别名alias,和多个标签tag。
到时候,就可以给这些别名和标签发送推送了。
也可以给所有跟这个客户端有关联的用户发送消息。
客户端可以调用相应的接口来设置信息。
服务器端可以调用相应的接口来发送推送。
应用需要去极光上注册一个
$master_secret = 'a36fef7cbd5b47b74c20278c';$app_key='1d2bd69d09cc96';
这个值是确定这个应用的账号。
类似于用户名和密码。
它关联这个应用。
require_once 'vendor/autoload.php';
use JPush\Model as M;
use JPush\JPushC
use JPush\JPushL
use Monolog\L
use Monolog\Handler\StreamH
use JPush\Exception\APIConnectionE
use JPush\Exception\APIRequestE
$br = '&br/&';
$spilt = ' - ';
$master_secret = 'a36fef7cbd5b47b74c20278c';
$app_key='1d2bd69d09cc96';
JPushLog::setLogHandlers(array(new StreamHandler('jpush.log', Logger::DEBUG)));
$client = new JPushClient($app_key, $master_secret);
//easy push
$result = $client-&push()
-&setPlatform(M\all)
//-&setAudience(M\all)
//-&setAudience(M\audience(M\tag(array('tag1','tag2'))))
//-&setAudience(M\audience(M\alias(array('123'))))
-&setAudience(M\audience(M\alias(array('1','123')),M\tag(array('tag1','tag2'))))//取交集,也就是别名为1,且其tag值为tag1或tag2的用户才能收到推送
-&setNotification(M\notification('Hi, JPush', M\android('Hi, android'), M\ios('你好,我是别名!', 'happy', 1, true)))
-&printJSON()
echo 'Push Success.' . $
echo 'sendno : ' . $result-&sendno . $
echo 'msg_id : ' .$result-&msg_id . $
echo 'Response JSON : ' . $result-&json . $
} catch (APIRequestException $e) {
echo 'Push Fail.' . $
echo 'Http Code : ' . $e-&httpCode . $
echo 'code : ' . $e-&code . $
echo 'Error Message : ' . $e-&message . $
echo 'Response JSON : ' . $e-&json . $
echo 'rateLimitLimit : ' . $e-&rateLimitLimit . $
echo 'rateLimitRemaining : ' . $e-&rateLimitRemaining . $
echo 'rateLimitReset : ' . $e-&rateLimitReset . $
} catch (APIConnectionException $e) {
echo 'Push Fail: ' . $
echo 'Error Message: ' . $e-&getMessage() . $
//response timeout means your request has probably be received by JPUsh Server,please check that whether need to be pushed again.
echo 'IsResponseTimeout: ' . $e-&isResponseTimeout . $
这是调用接口。
setPlatform设置平台
setPlatform(M\all) //设置所有平台
setPlatform(M\platform('ios', 'android'))//设置android和ios
setAudience设置受众
setAudience(M\all)设置所有受众
setAudience(M\audience(M\tag(array('tag1','tag2'))))//设置tag为tag1或tag2的受众,群发
setAudience(M\audience(M\alias(array('123')))) //设置别名alias为123的受众,单发
setAudience(M\audience(M\alias(array('1','123')),M\tag(array('tag1','tag2'))))//取交集,也就是别名为1,且其tag值为tag1或tag2的用户才能收到推送
setNotification设置通知
setNotification(M\notification('Hi, JPush')) //设置通用通知
setNotification(M\notification('Hi, JPush', M\android('Hi, android'))) //为安卓单独设置信息,ios则是显示第一个内容,也就是除了android之外的都是Hi,JPush
setNotification(M\notification('Hi, JPush', M\ios('Hi, ios','happy',1,true)))//为ios单独设置信息
setNotification(M\notification('Hi, JPush', M\android('Hi, android'), M\ios('Hi, ios', 'happy', 1, true))) //两个都设置
printJSON打印json值
$sendno 开发者指定的 API 调用标识
$msg_id 推送信息的唯一标示
如果想把一个推送关联一个新闻,可以通过参数extras
setNotification(M\notification('Hi, JPush', M\android('Hi, android'), M\ios('快下班了', 'happy', 1, true,array('url'=&''))))
function: JPush/Model/notification($alert /* args */)
构建notification对象
参数:$alert, ios(),android(),winphone()构建的对象
function: JPush/Model/ios($alert, $sound=null, $badge=null, $contentAvailable=null, $extras=null)
构建ios对象
setNotification(M\notification('Hi, JPush', M\android('Hi, android'), M\ios('快下班了', 'happy', 1, true,array('url'=&''))))
参数就是url,到时候就会通过url来进入新闻中去。
function: JPush/Model/android($alert, $title=null, $builder_id=null, $extras=null)
构建android对象
function: JPush/Model/winphone($alert, $title=null, $_open_page=null, $extras=null)
构建winphone对象
&setMessage设置消息
设置message,本方法接受4个参数msg_content(string,必填),&title(string),content_type(string),&extras(Array)
setMessage(M\message('这个是推送消息', '这是标题', '', array('url'=&''))) //设置内容,标题,以及附加值
&这里的数据,不是客户端来调用的,是系统调用的。可以不用设置。
&tag,tag_and的区别,是前者是并集,后者是交集。
setAudience(M\audience(M\tag(array('tag1')),M\tag_and(array('tag2','tag3')), M\alias(array('123','1'))))//用户标签为tag1的,且用户别名为123的,且标签中必须同时有tag2,tag3的。
function sendAll($content = '', $extras = array(), $title = '壹指', $sound = 'default', $badge = '+1')
$response = $this-&client-&push()-&setPlatform(M\all)
-&setAudience(M\all)
//-&setNotification(M\notification($content))
-&setNotification(M\notification($content, M\android($content,$title,null,$extras), M\ios($content, $sound, $badge, true,$extras)))
//-&printJSON()
-&setOptions(M\options(null, 86400, null, true))//第二个参数为0,表示不接受离线数据。86400表示离线数据保留一天。
return $response-&isOk;
//isOk sendno msg_id
options 推送可选项。
当前包含如下几个可选项:
sendno&int&可选&推送序号&纯粹用来作为 API 调用标识,API 返回时被原样返回,以方便 API 调用方匹配请求与返回。
time_to_live&int&可选&离线消息保留时长&推送当前用户不在线时,为该用户保留多长时间的离线消息,以便其上线时再次推送。默认 86400 (1 天),最长 10 天。设置为 0 表示不保留离线消息,只有推送当前在线的用户可以收到。
override_msg_id&long&可选&要覆盖的消息ID&如果当前的推送要覆盖之前的一条推送,这里填写前一条推送的 msg_id 就会产生覆盖效果,即:1)该 msg_id 离线收到的消息是覆盖后的内容;2)即使该 msg_id Android 端用户已经收到,如果通知栏还未清除,则新的消息内容会覆盖之前这条通知;覆盖功能起作用的时限是:1 天。 如果在覆盖指定时限内该 msg_id 不存在,则返回 1003 错误,提示不是一次有效的消息覆盖操作,当前的消息不会被推送。
apns_production&boolean&可选&APNs是否生产环境& True 表示推送生产环境,False 表示要推送开发环境; 如果不指定则为推送生产环境。
(消息) JPush 官方 API LIbrary (SDK) 默认设置为推送 &开发环境&。
big_push_duration&int&可选&定速推送时长(分钟)&又名缓慢推送,把原本尽可能快的推送速度,降低下来,在给定的 n 分钟内,均匀地向这次推送的目标用户推送。最大值为 1440。未设置则不是定速推送。
阅读(...) 评论()

我要回帖

更多关于 极光推送android实现 的文章

 

随机推荐