DCloud_App_Array
DCloud_App_Array
  • 发布:2015-05-25 11:24
  • 更新:2020-06-03 15:31
  • 阅读:57332

Android平台离线打包推送插件配置

分类:HTML5+

##个推推送平台配置
###需要拷贝的文件
需要引入工程的jar/aar文件
需要将以下jar/aar文件放到工程的libs目录下

| 路径 | 文件 |
| :-------: | :-------: |
| SDK\libs(1.9.9.52372之前) | aps.jar, aps-igexin.jar, GetuiSDK2.10.3.5.jar |
| SDK\libs(1.9.9.52372之后) | aps-release.aar, aps-igexin-release.aar |

需要将以下so文件放到工程的libs\armeabi目录下***(1.9.9.52372版本之后不需要设置此项)***

| 路径 | 文件名 |
| :-------: | :-------: |
| SDK\libs\armeabi | libgetuiext2.so |
| SDK\libs\armeabi-v7a| libgetuiext2.so |
| SDK\libs\x86| libgetuiext2.so |

需要引入工程的资源文件
需要将以下文件放到工程的res/layout目录下***(1.9.9.52372版本之后不需要设置此项)***

| 路径 | 文件名 |
| :-------: | :-------: |
| SDK\res\layout | getui_notification.xml |
| SDK\res\raw| keep.xml |
###Androidmainfest.xml文件需要修改的项
需要在application节点前添加权限
因Android L(android 5.0)系统自身限制,多个应用安装时,如果拥有同一个Service权限,会导致权限冲突,只能安装一个带有此权限的应用。对此,个推SDK在声明自定义权限时需要添加apk的包名以避免和其他使用个推的应用冲突。

<uses-permission android:name="android.permission.INTERNET"/>  
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>  
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>  
<uses-permission android:name="android.permission.WAKE_LOCK"/>  
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>  
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>  
<uses-permission android:name="android.permission.VIBRATE"/>  
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>  
<uses-permission android:name="android.permission.CALL_PHONE"/>  
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>  
<uses-permission android:name="getui.permission.GetuiService.$你的APK包名"/>  
<permission android:name="getui.permission.GetuiService.$你的APK包名" android:protectionLevel="normal"/>  

<application>节点下配置如下代码

        <meta-data android:name="PUSH_APPID" android:value="$你自己的APPID"/>  
        <meta-data android:name="PUSH_APPKEY" android:value="$你的appkey"/>  
        <meta-data android:name="PUSH_APPSECRET" android:value="$你的appsecret"/>  
        <service  
            android:name="com.igexin.sdk.PushService"  
            android:exported="true"  
            android:label="NotificationCenter"  
            android:process=":pushservice">  
            <intent-filter>  
                <action android:name="com.igexin.sdk.action.service.message"/>  
            </intent-filter>  
        </service>  
        <receiver android:name="com.igexin.sdk.PushReceiver">  
            <intent-filter>  
                <action android:name="android.intent.action.BOOT_COMPLETED"/>  
                <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>  
                <action android:name="android.intent.action.USER_PRESENT"/>  
                <action android:name="com.igexin.sdk.action.refreshls"/>  
                <action android:name="android.intent.action.MEDIA_MOUNTED"/>  
                <action android:name="android.intent.action.ACTION_POWER_CONNECTED"/>  
                <action android:name="android.intent.action.ACTION_POWER_DISCONNECTED"/>  
            </intent-filter>  
        </receiver>  
        <activity  
            android:name="com.igexin.sdk.PushActivity"  
            android:excludeFromRecents="true"  
            android:exported="false"  
            android:process=":pushservice"  
            android:taskAffinity="com.igexin.sdk.PushActivityTask"  
            android:theme="@android:style/Theme.Translucent.NoTitleBar"/>  
        <activity  
            android:name="com.igexin.sdk.GActivity"  
            android:excludeFromRecents="true"  
            android:exported="true"  
            android:process=":pushservice"  
            android:taskAffinity="com.igexin.sdk.PushActivityTask"  
            android:theme="@android:style/Theme.Translucent.NoTitleBar"/>  
        <receiver android:name="io.dcloud.feature.apsGt.GTNotificationReceiver">  
            <intent-filter>  
                <action android:name="android.intent.action.BOOT_COMPLETED"/>  
                <action android:name="填写APK的包名.__CREATE_NOTIFICATION"/>  
                <action android:name="填写APK的包名.__REMOVE_NOTIFICATION"/>  
                <action android:name="填写APK的包名.__CLEAR_NOTIFICATION"/>  
                <action android:name="填写APK的包名.__CLILK_NOTIFICATION"/>  
            </intent-filter>  
        </receiver>  
        <service  
            android:name="io.dcloud.feature.apsGt.GTNormalIntentService"/>  

dcloud_properties.xml需要添加如下代码
dcloud_properties.xml文件在assets/data目录下
features节点下添加

<feature name="Push" value="io.dcloud.feature.aps.APSFeatureImpl"><module name="igexin" value="io.dcloud.feature.apsGt.GTPushService"/></feature>

services节点下添加

<service  
            name="push"  
            value="io.dcloud.feature.aps.APSFeatureImpl" />

##小米推送
###需要拷贝的文件
需要将以下jar/aar文件拷贝到工程中

|路径|文件|
| :-------: | :-------: |
| SDK\libs(1.9.9.52372之前)| aps.jar,aps-xiaomi.jar,MiPush_SDK_Client_3_1_2.jar, |
| SDK\libs(1.9.9.52372之后)| aps-release.aar, aps-xiaomi-release.aar |

###Androidmainfest.xml文件需要修改的项

需要在application节点前添加权限

        <uses-permission android:name="android.permission.INTERNET"/>  
        <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.GET_TASKS"/>  
        <uses-permission android:name="android.permission.VIBRATE"/>  
        <uses-permission android:name="android.permission.GET_TASKS"/>  
        <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL"/>  
<uses-permission android:name="android.permission.GET_TOP_ACTIVITY_INFO"/>   
<permission android:name="填写APK的包名.permission.MIPUSH_RECEIVE" android:protectionLevel="signature"/>  
<uses-permission android:name="填写APK的包名.permission.MIPUSH_RECEIVE"/>

application节点下配置如下代码

<service android:enabled="true" android:process=":pushservice" android:name="com.xiaomi.push.service.XMPushService"/>  
<service android:name="com.xiaomi.push.service.XMJobService" android:enabled="true" android:exported="false" android:permission="android.permission.BIND_JOB_SERVICE" android:process=":pushservice"/>  
<service android:enabled="true" android:exported="true" android:name="com.xiaomi.mipush.sdk.PushMessageHandler"/>  
<service android:enabled="true" android:name="com.xiaomi.mipush.sdk.MessageHandleService"/>  
<receiver android:exported="true" android:name="com.xiaomi.push.service.receivers.NetworkStatusReceiver">  
<intent-filter>  
<action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>  
<category android:name="android.intent.category.DEFAULT"/>  
</intent-filter>  
</receiver>  
<receiver android:exported="false" android:process=":pushservice" android:name="com.xiaomi.push.service.receivers.PingReceiver">  
<intent-filter>  
<action android:name="com.xiaomi.push.PING_TIMER"/>  
</intent-filter>  
</receiver>  
<receiver android:exported="true" android:name="io.dcloud.feature.apsXm.XMMessageReceiver">  
<intent-filter>  
<action android:name="com.xiaomi.mipush.RECEIVE_MESSAGE"/>  
</intent-filter>  
<intent-filter>  
<action android:name="com.xiaomi.mipush.MESSAGE_ARRIVED"/>  
</intent-filter>  
<intent-filter>  
<action android:name="com.xiaomi.mipush.ERROR"/>  
</intent-filter>  
</receiver>  
<receiver android:exported="true" android:name="io.dcloud.feature.apsXm.XMNotificationReceiver">  
<intent-filter>  
<action android:name="android.intent.action.BOOT_COMPLETED"/>  
<action android:name="%填写APK的包名%.__CREATE_NOTIFICATION"/>  
<action android:name="%填写APK的包名%.__REMOVE_NOTIFICATION"/>  
<action android:name="%填写APK的包名%.__CLEAR_NOTIFICATION"/>  
<action android:name="%填写APK的包名%.__CLILK_NOTIFICATION"/>  
</intent-filter>  
</receiver>  
<meta-data android:name="PUSH_APPID" android:value="_%小米推送的APPID%"/>  
<meta-data android:name="PUSH_APPKEY" android:value="_%小米推送的APPKEY%"/>

###dcloud_properties.xml需要添加如下代码
dcloud_properties.xml文件在ADT工程assets/data目录下
Features节点下添加

<feature name="Push" value="io.dcloud.feature.aps.APSFeatureImpl">  
<module name="xiaomi" value="io.dcloud.feature.apsXm.XMPushService"/>  
</feature>

Service节点下添加

<service name="push" value="io.dcloud.feature.aps.APSFeatureImpl"/>
6 关注 分享
DIOGO 荼蘼 kaiven 望月孤魂 Trust 酷狗音乐人

要回复文章请先登录注册

河南dev

河南dev

在线帮解决安卓平台,华为小米手机在线和离线推送各种问题,只需帮我头条点点赞,评论,就能获得我的从零到一的完美解决,欢迎加q 476988188
2020-06-03 15:31
酷狗音乐人

酷狗音乐人

回复 HealerLZH :
## 关于unipush离线集成的方法
### 准备
1. 通过官方途径申请UniPush账号,参考[使用指南](http://ask.dcloud.net.cn/article/35622)

2. [离线SDK](https://ask.dcloud.net.cn/article/103)

### 配置

* 依赖文件

将aps-unipush-release.aar拷贝到已有项目libs文件夹下。

* gradle配置

打开build.gradle,在defaultConfig添加manifestPlaceholders节点,如下图所示,将io.dcloud.HBuilder替换成自己的应用包名,将appid等信息替换成申请之后的appid等。
~~~
android {
defaultConfig {
manifestPlaceholders = [
"plus.unipush.appid" : "pPyZWvH3Fa6PXba19ID0091",
"plus.unipush.appkey" : "b7dOGlNPHR7pqwUxcXPVi44",
"plus.unipush.appsecret": "IxVYAT9qws8dlNElacmSg12",
"apk.applicationId":"io.dcloud.HBuilder"
]
}
}
~~~


* dcloud_properties.xml配置

在properties中添加如下配置,features节点与services节点必须同时配置!

~~~
<properties>
<features>
<feature name="Push" value="io.dcloud.feature.aps.APSFeatureImpl">
<module name="unipush" value="io.dcloud.feature.unipush.GTPushService"/>
</feature>
</features>
<services>
<service name="push" value="io.dcloud.feature.aps.APSFeatureImpl"/>
</services>
</properties>
~~~

### 注意

* UniPush与个推及小米推送存在冲突,使用时请确保小米推送及个推相关文件已删除。
* 上述账号信息仅为展示使用,使用时需替换成自己申请的appkey等信息。
* 为了最大化的减少配置,权限及其他厂商配置统统放入aar中。

这个是在离线下载打包的 unipush离线集成指南.md里面看到的
2020-04-07 11:15
HealerLZH

HealerLZH

回复 HealerLZH :
可是uniPush就是个推提供的呀。怎么搞
2020-03-25 15:46
HealerLZH

HealerLZH

回复 1***@qq.com :
搞半天原来个推不是unipush
2020-03-25 15:44
1***@qq.com

1***@qq.com

回复 undefined0 :
请问楼主你的离线打包集成unipush了吗?都没有找到文档呢
2020-03-23 09:59
undefined0

undefined0

unipush 的操作说明写一下很困难吗?
2019-12-30 20:00
1***@qq.com

1***@qq.com

多少人照着这个文档做完了,然后一进系统就提示模块缺失,知道为什么这么多骂街的吗。官方文档离线打包只让 compile(name: 'lib.5plus.base-release', ext: 'aar')这么做了,后续加到libs里的引用文件全都无效,我直接去掉了compile,然后加了这一句implementation fileTree(include: ['*.aar'], dir: 'libs')。引用自:http://ask.dcloud.net.cn/question/61963?item_id=78547&rf=false
2019-12-29 13:57
1***@qq.com

1***@qq.com

您好,可以告知华为手机在个推上怎么配置吗?
2019-12-14 18:53
wallienliu

wallienliu

记录一下自己犯的错误:
1.这里的arr文件是从 dcloud的sdk拿到的 不是个推官网的
2. 配置id key secret的时候 要把""引号里面的内容全部替换掉 不要留$符号(不明白文档里面为什么要写$这个符号 作为一个完全的小白真的是 被坑了)
<meta-data android:name="PUSH_APPID" android:value="$你自己的APPID"/>
<meta-data android:name="PUSH_APPKEY" android:value="$你的appkey"/>
<meta-data android:name="PUSH_APPSECRET" android:value="$你的appsecret"/>
2019-11-16 11:11
l***@163.com

l***@163.com

使用官方的UniPush, 离线打包如何配置呢
2019-09-19 10:48