当前位置:   article > 正文

集成个推消息推送_[com.igexin.push.util.a] libgetuiext3.so not found

[com.igexin.push.util.a] libgetuiext3.so not found in path

个推集成步骤:

1. 将SDK资料包中GETUI_ANDROID_SDK/资源文件/so目录下所需CPU架构的目录拷贝到app/src/main/jniLibs目录下,

app/build.gradle文件中的android.defaultConfig下指定所需的 CPU 架构

  1. android {
  2. ...
  3. defaultConfig {
  4. ...
  5. ndk {
  6. // 添加项目所需CPU类型的最小集
  7. abiFilters "armeabi", "armeabi-v7a", "x86_64"
  8. }
  9. }
  10. }

注意:如果将 so 库放置在app/src/main/jniLibs以外的其他目录,请在app/build.gradle文件中的android段内正确设置 so 路径。假设 so 路径为app/libs,则需添加如下配置代码:

  1. sourceSets {
  2. main {
  3. jniLibs.srcDirs = ['libs']
  4. }
  5. }

2.  添加Maven库地址

在项目根目录build.gradle文件中,添加个推maven库地址,

  1. allprojects {
  2. repositories {
  3. maven {
  4. url "http://mvn.gt.igexin.com/nexus/content/repositories/releases/"
  5. }
  6. }
  7. }

 3. 配置依赖

app/build.gradle文件中引用个推SDK依赖库

  1. dependencies {
  2. compile fileTree(dir: 'libs', include: ['*.jar'])
  3. compile 'com.getui:sdk:2.13.3.0'
  4. }

4. 配置个推应用参数

app/build.gradle文件中的android.defaultConfig下添加manifestPlaceholders,配置个推相关的应用参数

  1. manifestPlaceholders = [
  2. GETUI_APP_ID : "APP_ID",
  3. GETUI_APP_KEY : "APP_KEY",
  4. GETUI_APP_SECRET : "APP_SECRET"
  5. ]

5. 在Manifest中配置个推SDK组件

请在AndroidManifest.xml<application>标签内增加以下组件配置(由于使用了manifestPlaceholders来做参数替换,因此以下配置无需手工修改,直接复制粘贴即可):

  1. <!-- 个推SDK配置开始 -->
  2. <!-- Android9.0以上默认不支持http通信,为保证SDK正常使用,请在application节点下新增该属性 -->
  3. <application android:usesCleartextTraffic="true">
  4. <!-- 配置的第三方参数属性 -->
  5. <meta-data
  6. android:name="PUSH_APPID"
  7. android:value="${GETUI_APP_ID}" />
  8. <meta-data
  9. android:name="PUSH_APPKEY"
  10. android:value="${GETUI_APP_KEY}" />
  11. <meta-data
  12. android:name="PUSH_APPSECRET"
  13. android:value="${GETUI_APP_SECRET}" />
  14. <!-- 配置SDK核心服务 -->
  15. <!-- permission属性在2.13.1.0版本后必须配置 -->
  16. <service
  17. android:name="com.igexin.sdk.PushService"
  18. android:permission="android.permission.BIND_JOB_SERVICE"
  19. android:exported="false"
  20. android:label="NotificationCenter"
  21. android:process=":pushservice">
  22. <intent-filter>
  23. <action android:name="com.igexin.sdk.action.service.message"/>
  24. </intent-filter>
  25. </service>
  26. <receiver android:name="com.igexin.sdk.PushReceiver" >
  27. <intent-filter>
  28. <action android:name="android.intent.action.BOOT_COMPLETED" />
  29. <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
  30. <action android:name="android.intent.action.USER_PRESENT" />
  31. <!-- 以下三项为可选的action声明,有助于提高service存活率 -->
  32. <action android:name="android.intent.action.MEDIA_MOUNTED" />
  33. <action android:name="android.intent.action.ACTION_POWER_CONNECTED" />
  34. <action android:name="android.intent.action.ACTION_POWER_DISCONNECTED" />
  35. </intent-filter>
  36. </receiver>
  37. <activity
  38. android:name="com.igexin.sdk.PushActivity"
  39. android:excludeFromRecents="true"
  40. android:exported="false"
  41. android:process=":pushservice"
  42. android:taskAffinity="com.igexin.sdk.PushActivityTask"
  43. android:theme="@android:style/Theme.Translucent.NoTitleBar" >
  44. </activity>
  45. <activity
  46. android:name="com.igexin.sdk.GActivity"
  47. android:excludeFromRecents="true"
  48. android:exported="true"
  49. android:process=":pushservice"
  50. android:taskAffinity="com.igexin.sdk.PushActivityTask"
  51. android:theme="@android:style/Theme.Translucent.NoTitleBar"/>
  52. <!-- 个推SDK配置结束 -->

6. 添加权限声明

请在<manifest>根标签下加入个推SDK所必需的权限,配置如下(由于使用了manifestPlaceholders来做参数替换,因此以下配置无需手工修改,直接复制粘贴即可):

  1. <!-- 个推SDK权限配置开始 -->
  2. <!-- 必选权限 -->
  3. <uses-permission android:name="android.permission.INTERNET" />
  4. <uses-permission android:name="android.permission.READ_PHONE_STATE" />
  5. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  6. <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
  7. <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
  8. <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
  9. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  10. <uses-permission android:name="android.permission.VIBRATE" />
  11. <uses-permission android:name="android.permission.GET_TASKS" />
  12. <!-- 以下为可选权限 -->
  13. <!-- 支持iBeancon 需要蓝牙权限 -->
  14. <uses-permission android:name="android.permission.BLUETOOTH" />
  15. <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
  16. <!-- 支持个推3.0 电子围栏功能 -->
  17. <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
  18. <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
  19. <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
  20. <!-- 自定义权限 -->
  21. <uses-permission android:name="getui.permission.GetuiService.${applicationId}" />
  22. <permission
  23. android:name="getui.permission.GetuiService.${applicationId}"
  24. android:protectionLevel="normal"/>
  25. <!-- 个推SDK权限配置结束 -->

7. 配置自定义推送服务

  1. import com.igexin.sdk.PushService;
  2. public class GePushService extends PushService {
  3. }

在AndroidManifest.xml中添加上述自定义Service (使用maven集成,process属性必须为pushservice,切勿更改):

  1. <service
  2. android:name=".service.GePushService"
  3. android:exported="true"
  4. android:label="PushService"
  5. android:process=":pushservice">
  6. </service>

8. 接收推送服务事件

在项目源码中添加一个继承自com.igexin.sdk.GTIntentService的类,用于接收CID、透传消息以及其他推送服务事件

  1. package com.getui.demo;
  2. import android.content.Context;
  3. import android.os.Message;
  4. import android.util.Log;
  5. import com.igexin.sdk.GTIntentService;
  6. import com.igexin.sdk.PushConsts;
  7. import com.igexin.sdk.PushManager;
  8. import com.igexin.sdk.message.FeedbackCmdMessage;
  9. import com.igexin.sdk.message.GTCmdMessage;
  10. import com.igexin.sdk.message.GTTransmitMessage;
  11. import com.igexin.sdk.message.SetTagCmdMessage;
  12. /**
  13. * 继承 GTIntentService 接收来自个推的消息, 所有消息在线程中回调, 如果注册了该服务, 则务必要在 AndroidManifest中声明, 否则无法接受消息<br>
  14. */
  15. public class DemoIntentService extends GTIntentService {
  16. public DemoIntentService() {
  17. }
  18. @Override
  19. public void onReceiveServicePid(Context context, int pid) {
  20. }
  21. // 处理透传消息
  22. @Override
  23. public void onReceiveMessageData(Context context, GTTransmitMessage msg) {
  24. // 透传消息的处理方式,详看SDK demo
  25. }
  26. // 接收 cid
  27. @Override
  28. public void onReceiveClientId(Context context, String clientid) {
  29. Log.e(TAG, "onReceiveClientId -> " + "clientid = " + clientid);
  30. }
  31. // cid 离线上线通知
  32. @Override
  33. public void onReceiveOnlineState(Context context, boolean online) {
  34. }
  35. // 各种事件处理回执
  36. @Override
  37. public void onReceiveCommandResult(Context context, GTCmdMessage cmdMessage) {
  38. }
  39. // 通知到达,只有个推通道下发的通知会回调此方法
  40. @Override
  41. public void onNotificationMessageArrived(Context context, GTNotificationMessage msg) {
  42. }
  43. // 通知点击,只有个推通道下发的通知会回调此方法
  44. @Override
  45. public void onNotificationMessageClicked(Context context, GTNotificationMessage msg) {
  46. }
  47. }

AndroidManifest.xml中配置上述 IntentService 类:

  1. <!-- permission属性在2.13.1.0版本后必须配置 -->
  2. <service
  3. android:name="com.getui.demo.DemoIntentService"
  4. android:permission="android.permission.BIND_JOB_SERVICE"/>

9. 初始化SDK

在主进程的Application.onCreate()、Activity.onCreate()方法中初始化个推SDK

  1. PushManager.getInstance().initialize(getApplicationContext(), DemoPushService.class);
  2. PushManager.getInstance().registerPushIntentService(getApplicationContext(),DemoIntentService.class);

完成以上步骤后,即可运行测试,如果clientId打印成功。就可以推送消息了。如果clientId没有打印成功,创建推送消息 是发送不出去的。

clientId没有打印,可以查看打印信息中有没有libgetuiext3.so的错误信息。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/738328
推荐阅读
相关标签
  

闽ICP备14008679号