最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

iOS中關(guān)于信鴿推送的使用demo詳解

 更新時(shí)間:2016年09月30日 14:05:58   作者:王豐蛋哥  
這篇文章主要介紹了iOS中關(guān)于信鴿推送的使用demo詳解,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下

最近在看推送方面的知識,用的是信鴿推送主要是因?yàn)楹笈_用的是信鴿

推送用第三方推送,也就是在客戶端建一個(gè)廣播接收器,當(dāng)服務(wù)器發(fā)送消息時(shí)發(fā)送到信鴿,信鴿再發(fā)送一次,廣播接受器接受下;

我實(shí)現(xiàn)的功能比較簡單,當(dāng)app在運(yùn)行狀態(tài)時(shí),會在主頁展示一個(gè)彈窗展示推送的消息;如果app不在運(yùn)行狀態(tài)且service沒被銷毀就展示默認(rèn)的通知

那么如何在主頁展示彈窗:當(dāng)廣播接受器收到我要的消息時(shí),用觀察者模式,收到消息在發(fā)送個(gè)消息個(gè)主界面

官方的Demo連接:http://xg.qq.com/xg/help/ctr_help/download

修改后Demo的地址:http://download.csdn.net/detail/qq_29774291/9635735

1.先按照官網(wǎng)的例子添加好權(quán)限及服務(wù)有些服務(wù)要改成自己的包名;

2.把官網(wǎng)的廣播接受器先復(fù)制到自己的項(xiàng)目中,再在清單文件中添加;

3.隨后添加從官網(wǎng)給出的3個(gè)AccessKey了

<meta-data android:name="com.tencent.rdm.uuid" android:value="eb5fa555d70c3246a4944f55be8c266b" />
<!-- 【必須】 請將YOUR_ACCESS_ID修改為APP的AccessId,“21”開頭的10位數(shù)字,中間沒空格 -->
<!-- 【必須】 請修改為APP的AccessId,“21”開頭的10位數(shù)字,中間沒空格 -->
<meta-data
android:name="XG_V2_ACCESS_ID"
android:value="2100219302" />
<!-- 【必須】 請修改為APP的AccessKey,“A”開頭的12位字符串,中間沒空格 -->
<meta-data
android:name="XG_V2_ACCESS_KEY"
android:value="A15KJ71W9ELC" />

4.現(xiàn)在在主界面中注冊信鴿推送主要是獲取一個(gè)token,然后可以上傳給服務(wù)端,現(xiàn)在服務(wù)器就可以給你發(fā)送消息了;當(dāng)然從信鴿官方后臺可以發(fā)送消息,但是從信鴿后臺發(fā)送的消息有時(shí)會接受不到,這點(diǎn)做的完全不及極光推送好

XGPushConfig.enableDebug(this, true);這句發(fā)布的時(shí)候記得改為false或刪除

//信鴿start
private String token;
private Message message = null;
private void XGInit() {
// TODO Auto-generated method stub
XGPushConfig.enableDebug(this, true);
// 如果需要知道注冊是否成功,請使用registerPush(getApplicationContext(),
// XGIOperateCallback)帶callback版本
// 如果需要綁定賬號,請使用registerPush(getApplicationContext(),account)版本
// 具體可參考詳細(xì)的開發(fā)指南
// 傳遞的參數(shù)為ApplicationContext
//Context context = getApplicationContext();
//1.獲取設(shè)備的Token
Handler handler = new HandlerExtension(MainActivity.this);
message = handler.obtainMessage();
XGPushManager.registerPush(getApplicationContext(), new XGIOperateCallback() {
@Override
public void onSuccess(Object data, int flag) {
// TODO Auto-generated method stub
Log.d("jiejie", "+++ register push sucess. token:" + data + " " + flag);
token = data + "";
message.obj = "+++ register push sucess. token:" + data;
System.out.println(token);
message.sendToTarget();
}
@Override
public void onFail(Object data, int errCode, String msg) {
// TODO Auto-generated method stub
Log.d("jiejie", "+++ register push fail. token:" + data
+ ", errCode:" + errCode + ",msg:"
+ msg);
message.obj = "+++ register push fail. token:" + data
+ ", errCode:" + errCode + ",msg:" + msg;
message.sendToTarget();
}
});
}
private static class HandlerExtension extends Handler{
WeakReference<MainActivity> mActivity;
HandlerExtension(MainActivity activity) {
mActivity = new WeakReference<MainActivity>(activity);
}
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
MainActivity theActivity = mActivity.get();
if(theActivity == null){
theActivity = new MainActivity();
}
if(msg != null){
Log.d(Constants.LogTag, msg.obj.toString());
System.out.println("ddd"+msg.obj.toString());
}
}
}

5.修改廣播接受器中的onTextMessage方法,當(dāng)消息發(fā)送來時(shí),將消息發(fā)送到主界面,不展示通知

不過你先要知道你app是否正在運(yùn)行狀態(tài)

/**
* 判斷是否運(yùn)行在前臺
* 
* @param context
* @return
*/
public static boolean isRunningForeground(Context context) {
String packageName = getPackageName(context);
String topActivityClassName = getTopActivityName(context);
Log.d("TAG", "packageName=" + packageName + ",topActivityClassName=" + topActivityClassName);
if (packageName != null && topActivityClassName != null && topActivityClassName.startsWith(packageName)) {
Log.d("TAG", "---> isRunningForeGround");
return true;
} else {
Log.d("TAG", "---> isRunningBackGround");
return false;
}
}
// 方法2、通過RunningAppProcessInfo類判斷(不需要額外權(quán)限):
public static boolean isBackground(Context context) {
ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
List<RunningAppProcessInfo> appProcesses = activityManager.getRunningAppProcesses();
for (RunningAppProcessInfo appProcess : appProcesses) {
if (appProcess.processName.equals(context.getPackageName())) {
if (appProcess.importance == RunningAppProcessInfo.IMPORTANCE_BACKGROUND) {
Log.i("后臺", appProcess.processName);
return true;
} else {
Log.i("前臺", appProcess.processName);
return false;
}
}
}
return false;
}

6.通知EventBus來實(shí)現(xiàn)觀察者模式在廣播接收器中發(fā)送消息

// 消息透傳
@Override
public void onTextMessage(Context context, XGPushTextMessage message) {
String text = "收到消息:" + message.toString();
EventBus.getDefault().post(text);
System.out.println(text);
// 獲取自定義key-value
PushTextMessage pushTextMessage = new PushTextMessage();
String title = message.getTitle();
String content = message.getContent();
pushTextMessage.setTitle(title);
pushTextMessage.setContent(content); 
String customContent = message.getCustomContent();
if (customContent != null && customContent.length() != 0) {
try {
// JSONObject obj = new JSONObject(customContent);
// // key1為前臺配置的key
// if (!obj.isNull("key")) {
// String value = obj.getString("key");
// LogUtils.log(LogTag, "get custom value:" + value);
// }
CustomContent custom = com.alibaba.fastjson.JSONObject.parseObject(customContent, CustomContent.class);
if (custom != null) {
pushTextMessage.setCustomContent(custom);
}
// ...
} catch (Exception e) {
System.out.println(e + "d");
e.printStackTrace();
}
}
show(context, text);
Log.d("jiejie", "pushTextMessage:" + pushTextMessage);
// EventBus.getDefault().post(pushTextMessage);
try {
// APP自主處理消息的過程...
boolean isForeground = AppUtil.isRunningForeground(context);
Log.d("jiejie", isForeground + "d");
if (isForeground) {
EventBus.getDefault().post(pushTextMessage);
} else {
notify(context, title, content);
}
} catch (Exception e) {
System.out.println(e + "ddd");
e.printStackTrace();
}

7.在主界面中接受EventBus發(fā)送的消息,展示一個(gè)彈窗

@Subscribe
public void onMessageReviced(final PushTextMessage pushTextMessage){
Log.d("jiejie", "好" + " 標(biāo)題" +pushTextMessage.getTitle() + " 內(nèi)容:" +pushTextMessage.getContent() + "CustomContent" + pushTextMessage.getCustomContent().getCmd());
if(pushTextMessage != null){
showAlertDialog(this, pushTextMessage);
}
}
private void showAlertDialog(Context context,PushTextMessage text){
AlertDialog.Builder dialog = new AlertDialog.Builder(context);
dialog.setTitle("推送的標(biāo)題");
dialog.setMessage(text.getContent());
dialog.setPositiveButton("確認(rèn)", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
// TODO Auto-generated method stub
}
});
AlertDialog mDialog = dialog.create();
mDialog.show();
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
EventBus.getDefault().unregister(this);
}

以上所述是小編給大家介紹的iOS中關(guān)于信鴿推送的使用demo詳解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • iOS實(shí)現(xiàn)九宮格自動生成視圖

    iOS實(shí)現(xiàn)九宮格自動生成視圖

    這篇文章主要為大家詳細(xì)介紹了iOS實(shí)現(xiàn)九宮格自動生成視圖的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-03-03
  • iOS中searchBar(搜索框)光標(biāo)初始位置后移

    iOS中searchBar(搜索框)光標(biāo)初始位置后移

    這篇文章主要介紹了iOS中searchBar(搜索框)光標(biāo)初始位置后移的關(guān)鍵代碼,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-08-08
  • iOS開發(fā)實(shí)現(xiàn)隨機(jī)圖片驗(yàn)證碼封裝

    iOS開發(fā)實(shí)現(xiàn)隨機(jī)圖片驗(yàn)證碼封裝

    這篇文章主要介紹了iOS開發(fā)實(shí)現(xiàn)隨機(jī)圖片驗(yàn)證碼封裝,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-08-08
  • IOS之UIWebView的使用(基本知識)

    IOS之UIWebView的使用(基本知識)

    在Android開發(fā)中有WebView作為混合模式開發(fā)的橋梁,當(dāng)然在IOS中也同樣有一個(gè) UIWebView 組件來作為混合模式開發(fā)的橋梁,那么下面就對UIWebView的一些基本知識詳解一下
    2016-02-02
  • IOS 仿Android吐司提示框的實(shí)例(分享)

    IOS 仿Android吐司提示框的實(shí)例(分享)

    下面小編就為大家分享一篇IOS 仿Android吐司提示框的實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • iOS開發(fā)學(xué)習(xí)之監(jiān)測程序的崩潰次數(shù)詳解

    iOS開發(fā)學(xué)習(xí)之監(jiān)測程序的崩潰次數(shù)詳解

    iOS開發(fā)中遇到程序崩潰是很正常的事情,下面這篇文章主要給大家介紹了關(guān)于iOS如何監(jiān)測程序崩潰次數(shù)的相關(guān)資料,文中通過詳細(xì)的示例代碼供大家參考學(xué)習(xí),需要的朋友們下面跟著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-07-07
  • iOS umeng 獲取deviceToken的方法

    iOS umeng 獲取deviceToken的方法

    下面小編就為大家分享一篇iOS umeng 獲取deviceToken的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • cmake ios終端下執(zhí)行提示錯(cuò)誤 iOS version not found, tested: [5.0;5.1;6.0;6.1;7.0;8.3]的解決方案

    cmake ios終端下執(zhí)行提示錯(cuò)誤 iOS version not found, tested: [5.0;5.1;6

    這篇文章主要介紹了cmake ios終端下執(zhí)行提示錯(cuò)誤 iOS version not found, tested: [5.0;5.1;6.0;6.1;7.0;8.3]的解決方案的相關(guān)資料,需要的朋友可以參考下
    2016-10-10
  • iOS中的類、元類以及isa示例詳解

    iOS中的類、元類以及isa示例詳解

    從初學(xué)OC的時(shí)候就聽人提起過OC對象中的isa指針,用來指向?qū)ο笏鶎俚念悾瑥亩梢栽谡{(diào)用方法時(shí)通過isa指針找到相應(yīng)的方法和屬性,下面這篇文章主要給大家介紹了關(guān)于iOS中類、元類以及isa的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-01-01
  • iOS DropDown下拉按鈕效果代碼分享

    iOS DropDown下拉按鈕效果代碼分享

    這篇文章主要為大家詳細(xì)介紹了iOS DropDown下拉按鈕效果的實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-04-04

最新評論

吐鲁番市| 水城县| 轮台县| 清水县| 抚远县| 泸溪县| 黔西| 青铜峡市| 贺兰县| 靖宇县| 和田市| 东乡族自治县| 从化市| 贵溪市| 饶河县| 涞源县| 九龙城区| 珲春市| 屯留县| 德安县| 太谷县| 葫芦岛市| 普格县| 洪泽县| 洪洞县| 崇左市| 康马县| 凤城市| 威宁| 甘德县| 吉首市| 昌黎县| 文山县| 江津市| 萍乡市| 勐海县| 丰宁| 澄迈县| 和林格尔县| 浑源县| 微山县|