Unity3D集成极光推送--安卓版

27 篇文章 0 订阅

1:注册

官网注册账户,创建应用

2:demo体验

应用设置–>推送设置中,设置好应用包名后,即可下载体验包
在这里插入图片描述

3:官方教程

官方提供的是泛安卓平台下的集成方法Android SDK集成指南,笔者使用文中提到的手动集成方法。

3.1 SDK下载

资源下载

3.2 必要资源复制

  • 解压缩安卓版SDK包:jpush-android-3.x.x-release.zip
  • 复制libs/jcore-android-2.3.0.jar到Unity工程的Plugins/Android/libs目录下
  • 复制libs/jpush-android-3.5.8.jar到Unity工程的Plugins/Android/libs目录下
  • 复制libs/armeabi-v7a目录和libs/arm64-v8a目录到Unity工程Plugins/Android/libs目录下,其余小众版本不需要再考虑了
  • 再复制res目录到Plugins/Android目录下,即和libs同级目录

注意 默认情况下推送图标和工程的图标一致,在 5.0 以上系统将应用图标作为 statusbar icon 可能显示不正常,用户可以在res/drawable-hdpi下新增jpush_notification_icon.png图标即可显示正常。
特别注意,笔者亲测 图标背景 不能用纯色,需要用透明背景,把icon轮廓显示出来。如果背景是纯色,那么显示出来的是白色方块

3.3 初始化

在android studio中写了个继承自UnityPlayerActivity的MainActivity.java,并设置脚本所在包名和项目一致,在该脚本中对JPUSH初始化

public class MainActivity extends UnityPlayerActivity {
   @Override
   protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       Log.d("unityPlugin","-------->初始化JPUSH");
       JPushInterface.setDebugMode(true);
       JPushInterface.init(this);
   }
}

注意,对于发布版本,尽量设置setDebugMode(false)

3.4 配置AndroidManifest.xml和必要代码

3.4.1 启动Activity需要改成上述提到的MainActivity
<activity android:label="@string/app_name" 
		android:name=".MainActivity"
		android:screenOrientation="sensorLandscape">
      <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>
    </activity>

这里有一点需要注意,即.MainActivity写法的问题,在某些版本unity上打包后会出现java.lang.ClassNotFoundException Did not find class com.unity3d.player.MainActivity的问题,解决方法见这里

3.4.2 根据SDK压缩包中的AndroidManifest.xml样例文件以及示例代码来配置
  • 复制备注为“Required”的部分(权限、以及后续JPUSH配置)
  • 将标注为 ${applicationId}的改成包名,将标注为 ${JPUSH_CHANNEL}的改成自己可识别的渠道字符串,将标注为
    ${JPUSH_APPKEY}的改成后台创建应用时生成的APPKEY
  • 3个标注为User defined的,需要配置在xml中,且需要在插件端实现,不然出的包会报错并给出对应的提示(笔者是在和项目同名的包下创建对应的java脚本,然后分别拷贝压缩包中com.example.jpushdemo.MyReceiver, com.example.jpushdemo.PushMessageReceiver, com.example.jpushdemo.PushService三个脚本的代码,把不需要的代码<比如打开其他activity等>注释)

4 github版本

github上有专门的针对Unity3D的激光推送package,版本稍微有点落后,有兴趣的可以试一下:jpush-unity3d-plugin

3.5 收到推送消息,点击消息后拉起Unity应用

public class MyJPUSHMessageReceiver  extends JPushMessageReceiver {
    private static final String TAG = "JPushMessageReceiver";
    @Override
    public void onMessage(Context context, CustomMessage customMessage) {
        Log.e(TAG,"[onMessage] "+customMessage);
        processCustomMessage(context,customMessage);
    }

    @Override
    public void onNotifyMessageOpened(Context context, NotificationMessage message) {
        Log.e(TAG,"[onNotifyMessageOpened] "+message);

		//拉起unity应用
        Intent i = new Intent(context, MainActivity.class);
        i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(i);
    }

AndroidManifest需配置

    <receiver android:name="com.freecasino.vegas.slots.master.game.MyJPUSHMessageReceiver">
      <intent-filter>
        <action android:name="cn.jpush.android.intent.RECEIVE_MESSAGE" />
        <category android:name="包名"></category>
      </intent-filter>
    </receiver>

主activity需要设置:android:launchMode="singleTask"

5 异常分析

笔者有遇到项目的推送图标还是极光的图标,导致原因是先打开了极光的demo工程,由于demo工程配置了和项目工程一致的包名,虽然demo工程已卸载,且新安装了项目工程,但是缓存未清理导致了项目推送图标出现问题。重启手机即可解决。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

iningwei

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值