jpush for unity的问题


(在云端) #1
   <!-- For test only. 测试的主程序 -->
   <activity
        android:name="com.example.unity3d_jpush_demo.UnityPluginActivity"
        android:configChanges="orientation|keyboardHidden|screenSize"
        android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>
            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>
    </activity>

打包出来的apk程序有自己的MainActivity,上面这段可以删除吗?


#2

文档中AndroidManifest里面提到的核心功能部分、require部分都是必须的,可选的部分可以删除


(在云端) #3

那就是说这段是可以删除的了。之所以这么问是因为我导入到Unity里的AndroidManifest文件里的内容我都有保留,唯独上面这一段被我删掉了。现在的问题是我打包到安卓模拟器上运行了,程序运行起来没有报错,PluginsDemo.cs有执行正常,因为PluginsDemo里的OnGUI内容已经正常的显示出来了。但我在极光平台上发送推送通知时,模拟器上收不到通知。由于不知道这个unity插件要怎么调试,所以不知道问题出现在哪里


#4

那关于收不到通知,
1、你客户端是否集成成功,获取registrationID是否可以获取到,能获取到提供给我
2、提供你推送的消息的msgid


(在云端) #5

按照你说的第一步,写了一个测试按钮。当点击按钮是我会调用JPushBindding.getRegistrationId(),如果返回空就会打印“none registration id”,这是否意味着我集成JPushSDK失败了。如果失败了,那我现在应该按照怎么样的步骤排查呢。


(在云端) #6

我用Unity打包生成的apk安装在模拟器是可以接收到通知的,完全正确。现在的问题是这样的,我们项目组自己开发了一个打包工具,它会把unity里的资源拷贝出来,放在一个安卓的环境下打包出apk,这个apk安装在模拟器上就接收不到通知,并且registrationId也为空。


(在云端) #7

请问:执行这段代码 JPushInterface.init(getActivity()); 如果getActivity()返回的是null,是不是初始化JPush服务器就失败了?


#8

你这边打包后能不能看到极光相关的日志?如果集成失败会有一些日志提示,将错误日志提供一下,以便于排查问题所在
首先检查是否debug开了日志。


(在云端) #9

我也在想通过日志进行排查。我用的是jpush-unity3d插件,生成出来的apk运行在模拟器上面。极光相关的日志是输出到控制台的那我用模拟器是看不到的,如果是写入某个文件的话,那这个文件写在哪里了呢?


(Hevin) #10

模拟器用 Android Studio 也是可以看到日志的。


(在云端) #11

我没有明白,我打包出来的apk文件是运营在mumu模拟器上的。这个怎么跟android studio关联起来,又如何能看到日志呢?我对安卓开发没有经验,所以还要劳烦你给详细讲解下


(Hevin) #12

理论上只要是 Android 应用无论跑在模拟器还是手机上,都可以用 Android Studio 来查看日志。

因为你说用 Unity 打包生成的 apk 是正常的,但用你们项目组自己的打包工具打包成 apk 就接受不到通知。所以不太清楚你们的打包工具具体做了什么操作,不好推断具体是哪里出了问题。


(在云端) #13

[JPushInterface] System.loadLibrary::jpush219java.lang.UnsatisfiedLinkError: Couldn’t load jpush219 from loader android.app.CloneClassLoader[DexPathList[[zip file “/data/app/com.dami.ttqz2-1.apk”],nativeLibraryDirectories=[/data/app-lib/com.dami.ttqz2-1, /system/lib, /system/lib/arm]]]: findLibrary returned null

以上是调试出来的报错信息,这个错误是由于什么引起的呢?我在网上查了下,很多人说是缺少了so文件,然后我检查了一下我的项目,在libs\armeabi和libs\armeabi-v7a以及libs\x86这三个文件夹下面都有libjpush219.so文件。


#14

关于so文件有需要注意的地方:


(在云端) #15

安卓的问题已经解决了,谢谢!

现在在iOS上遇到了一个新问题:我们项目用的是xcode7.3版本,你们的jpush for unity插件的推送用到了UserNotification.framework框架,这个框架无法在低于xcode8.0版本上使用,无法通过编译会报错。但由于我们项目的特殊原因无法将xcode7.3升级到xcode8,请问你们有什么解决方法吗?


#16

用xcode 7,不用这个框架,且iOS10 使用旧接口,不要用新的接口即可。

支持一般的推送功能,仅不支持 iOS10新特性。


(在云端) #17

你的意思是说我还可以继续使用jpush for unity这个插件,指不过不要导入UserNotification.framework框架了,是吗?

如果是的话,那我的疑问是:
1.我需要导入别的框架来替代UserNotification.framework框架吗?
2.jpush for unity插件里你们所提供的脚本代码我需要改什么吗?


(在云端) #18

补充一点上面的回答,我们的项目不需要支持iOS10推送的新特性,不支持新特性没有关系。


(ddffff2017) #19

我也遇到相同的android 问题 楼主是怎么解决的?