您的位置:首页 > 移动开发 > Android开发

AndroidStudio接入信鸽推送常见问题(附安卓接入视频教程)

2017-05-31 23:36 901 查看

AndroidStudio接入信鸽推送常见问题(附安卓接入视频教程)

由于腾讯的信鸽推送只有Eclipse接入文档,本文附上AS接入教程(想看视频教程的直接拉到文末),并总结网上常见的问题包括消息接收、自定义通知栏等,官网上有的东西我就一笔带过了。

1.在信鸽管理平台xg.qq.com注册,应用创建成功后,会得到APP专属的AccessId和AccessKey等信息。注册完成后,请下载最新版本的Android SDK到本地,并解压。

2.解压下载好的sdk文件,将解压后的libs文件夹下的所有jar包添加到AS项目中的libs目录下。其中里面带有一个support-v4包,如果你的项目中已经有v4包了,这里就不要再引入了,否则会报这样的错:Multiple dex files define Landroid/support/v4/xx!



3.在AS项目中,main目录下建一个jniLibs包,将解压后的Other-Platform-SO文件夹下的所有.so文件添加到jniLibs文件夹下。



4.修改清单文件manifests文件官网也有,具体如下:

<!--广播接收者中创建对话框需要加这个权限-->
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />

<!-- 【必须】 信鸽SDK所需权限   -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.VIBRATE" />
<!-- 【常用】 信鸽SDK所需权限 -->
<uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<!-- 【可选】 信鸽SDK所需权限
cab0
-->
<uses-permission android:name="android.permission.RESTART_PACKAGES" />
<uses-permission android:name="android.permission.BROADCAST_STICKY" />
<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.READ_LOGS" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BATTERY_STATS" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<!-- 【必须】 信鸽receiver广播接收 -->
<!-- 【必须】 (2.30及以上版新增)展示通知的activity -->
<activity
android:name="com.tencent.android.tpush.XGPushActivity"
android:theme="@android:style/Theme.Translucent"
android:exported="false" >
<intent-filter>
<!-- 若使用AndroidStudio,请设置android:name="android.intent.action"-->
<action android:name="android.intent.action" />
</intent-filter>
</activity>

<!-- 【必须】 信鸽receiver广播接收 -->
<receiver
android:name="com.tencent.android.tpush.XGPushReceiver"
android:process=":xg_service_v3" >
<intent-filter android:priority="0x7fffffff" >

<!-- 【必须】 信鸽SDK的内部广播 -->
<action android:name="com.tencent.android.tpush.action.SDK" />
<action android:name="com.tencent.android.tpush.action.INTERNAL_PUSH_MESSAGE" />
<!-- 【必须】 系统广播:网络切换 -->
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />

<!-- 【可选】 系统广播:开屏 -->
<action android:name="android.intent.action.USER_PRESENT" />

<!-- 【可选】 一些常用的系统广播,增强信鸽service的复活机会,请根据需要选择。当然,你也可以添加APP自定义的一些广播让启动service -->
<action android:name="android.bluetooth.adapter.action.STATE_CHANGED" />
<action android:name="android.intent.action.ACTION_POWER_CONNECTED" />
<action android:name="android.intent.action.ACTION_POWER_DISCONNECTED" />
</intent-filter>
<!-- 【可选】 usb相关的系统广播,增强信鸽service的复活机会,请根据需要添加 -->
<intent-filter android:priority="0x7fffffff" >
<action android:name="android.intent.action.MEDIA_UNMOUNTED" />
<action android:name="android.intent.action.MEDIA_REMOVED" />
<action android:name="android.intent.action.MEDIA_CHECKING" />
<action android:name="android.intent.action.MEDIA_EJECT" />

<data android:scheme="file" />
</intent-filter>
</receiver>
<!-- 【必须】 信鸽service -->
<service
android:name="com.tencent.android.tpush.service.XGPushServiceV3"
android:exported="true"
android:persistent="true"
android:process=":xg_service_v3" />

<!-- 【必须】 增强xg_service存活率  -->
<service
android:name="com.tencent.android.tpush.service.XGDaemonService"
android:process=":xg_service_v3" />

<!-- 【可选】APP实现的Receiver,用于接收消息透传和操作结果的回调,请根据需要添加 -->
<!-- YOUR_PACKAGE_PATH.CustomPushReceiver需要改为自己的Receiver: -->
<receiver android:name=".receiver.MessageReceiver"
android:exported="true" >
<intent-filter>
<!-- 接收消息透传 -->
<action android:name="com.tencent.android.tpush.action.PUSH_MESSAGE" />
<!-- 监听注册、反注册、设置/删除标签、通知被点击等处理结果 -->
<action android:name="com.tencent.android.tpush.action.FEEDBACK" />
</intent-filter>
</receiver>

<!-- 【必须】 通知service,其中android:name部分要改为当前包名 -->
<service
android:name="com.tencent.android.tpush.rpc.XGRemoteService"
android:exported="true" >
<intent-filter>
<!-- 【必须】 请修改为当前APP名包.PUSH_ACTION,如demo的包名为:com.qq.xgdemo -->
<action android:name="com.qq.xgdemo.PUSH_ACTION" />
</intent-filter>
</service>

<!-- 【必须】 【注意】authorities修改为 包名.AUTH_XGPUSH, 如demo的包名为:com.qq.xgdemo-->
<provider
android:name="com.tencent.android.tpush.XGPushProvider"
android:authorities="com.qq.xgdemo.AUTH_XGPUSH"
android:exported="true"
/>

<!-- 【必须】 【注意】authorities修改为 包名.TPUSH_PROVIDER, 如demo的包名为:com.qq.xgdemo-->
<provider
android:name="com.tencent.android.tpush.SettingsContentProvider"
android:authorities="com.qq.xgdemo.TPUSH_PROVIDER"
android:exported="false" />

<!-- 【必须】 【注意】authorities修改为 包名.TENCENT.MID.V3, 如demo的包名为:com.qq.xgdemo-->
<provider
android:name="com.tencent.mid.api.MidProvider"
android:authorities="com.qq.xgdemo.TENCENT.MID.V3"
android:exported="true" >
</provider>

<!-- 【必须】 请将YOUR_ACCESS_ID修改为APP的AccessId,“21”开头的10位数字,中间没空格 -->
<meta-data
android:name="XG_V2_ACCESS_ID"
android:value="2100259190" />

<!-- 【必须】 请将YOUR_ACCESS_KEY修改为APP的AccessKey,“A”开头的12位字符串,中间没空格 -->
<meta-data
android:name="XG_V2_ACCESS_KEY"
android:value="A6ATR1QT269D" />

</application>
</manifest>


5.在Activity中进行注册后即可使用,在其onCreate(Bundle savedInstanceState)重载方法内,添加以下代码,完成信鸽服务的启动与APP注册过程。

// 开启logcat输出,方便debug,发布时请关闭
// XGPushConfig.enableDebug(this, true);
// 注册
ApplicationContext Context context = getApplicationContext(); XGPushManager.registerPush(context


6.还有在信鸽平台进行推送的时候,新版不能用标签分类推送,切换到老版本才有,还有有的同学问批量账号入口找不到,换个浏览器就行了。

7.将app进程杀死后,虽然IOS可以继续收到信鸽推送的消息,但Android手机并不能收到信鸽推送的消息,其他推送平台也一样包括极光推送等。

8.自定义通知栏问题,有的同学发送的消息内容字数多,而通知栏一般有系统固定高度,并无法更改,看了关于信鸽推送的NoticationBuilder方面的源码,都混淆了,很难更改。只是在官方的XGPushNotificationBuilder类中,发现当RemoteViews = null时,默认使用bigText,一旦自定义通知栏就不行了,而且自定义通知。只能修改声音、图标、字体大小和颜色等,其他的也不能更改。

9.关于透传消息,也就是应用内接收到的消息,官网文档上也有,参考 MessageReceiver这个类,就不赘述了。

最后贴上AS接入信鸽推送的视频教程

链接: http://pan.baidu.com/s/1c2xQ6Q0

密码: 2569
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: