项目上线前,升级友盟分享的插件至新版本,发现android部分需要配置工程中各项内容,意味着每次打新版都需要多一系列步骤,实在是太蠢了,在客服联系过友盟后,明确表示不支持Unity下plugin的方式,在一系列决定之后,决定逆向来把这些步骤集成至Unity项目中。
仔细观察需要导入的src下的文件后,发现主要分为三块内容
- socialsdk桥接文件
- 项目各个平台初始化及Key值注册(之前版本是在Unity进行初始化)
- wxapi下微信的回调
其中后两项是在项目包下
socailsdk集成
首先创建一个空的android-lib项目
android create lib-project --name UmengPlugin --target X --path ./UmengPlugin --package com.umeng.socialsdk
将src拷入项目中(com.umeng.socialsdk包,其他的不用打在这个项目中)
最后修订一下build.xml,在project的tag下新增
<target name="jar" depends="debug"> <jar destfile="bin/SocialSDK.jar" basedir="bin/classes"/> </target>
最后在项目目录下用ant jar就能编译了
初始化
集成文档中是放在App.java中,并在AndroidManifest中新增一个application,死活初始化不成功,干脆直接做成静态方法主动在unity侧调用更加方便,这里我图省事直接放在UMSocialSDK.java里了,当然也可以新建一个工程,一样的。
//init import com.umeng.socialize.Config; import com.umeng.socialize.PlatformConfig;
public static void initWeChat(){ Config.shareType = "u3d"; UMShareAPI.get(mActivity); Config.DEBUG = true; PlatformConfig.setWeixin("wx11111fff111111bb", "11111111111111111111111111111111111"); }
微信回调
这里新开一个项目,注意包名与自身项目一致,并在AndroidManifest中新增这个activity
<activity android:name=".wxapi.WXEntryActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar" android:configChanges="keyboardHidden|orientation|screenSize" android:exported="true" android:screenOrientation="portrait" />
将两个jar包放入Plugins\Android\目录下,如果是由旧版本升级还需整理一下,可以参考升级文档
否则会编译会有冲突。
再修订一下Social.cs
public static void Authorize(Platform platform, AuthDelegate callback=null){ \#if UNITY_ANDROID try { UMSocialSDK.CallStatic("initWeChat"); //下面这句要屏蔽掉。。。 //SetPlatforms(new Platform[] { platform }); Run(delegate { var androidAuthListener = new AndroidAuthListener(callback); //UMSocialSDK.CallStatic("fuckUmeng"); UMSocialSDK.CallStatic("authorize", (int)platform, androidAuthListener); }); } catch(AndroidJavaException exp) { Debug.LogError(exp.Message); } }
最后友盟这半吊子的SDK实在是无力吐槽了。。。
- umeng_social_sdk v6.4.2