Unity中使用ShareSDK微信登录的问题

说到APP中使用社会化分享无非就是网上流行的SDK,比如shareSDK、友盟等等。由于项目之前就使用shareSDK的缘故,所以新的Unity工程也使用的是shareSDK。然而我们在使用过程中发现唯独微信登录死活登录不了,登录的界面可以出来但是登录的回调却不执行!好吧,那就看shareSDK的文档吧,文档地址在这http://wiki.mob.com/unity3d%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E6%8C%87%E5%8D%97/。我们按照shareSDK提供的文档导入到Unity工程中发现死活无法使用,当然微信的那些APPID什么的我们都设置好了的,并且之前的应用是没有任何问题的。这么说来微信的配置是没有问题,问题就出现在登录之后无法回调,而iOS的例子是没有问题的。最后下载官方的Android示例,并签名打包运行发现是可以的。


其清单文件是这样的

注意两个划线的地方,另外说明一下我当前示例项目使用的包名也是com.showbaby.arleague.arshow,使用此示例项目是可以正常使用的。那么从这里可以得出结论就是这个WXEntryActivity类必须在当前项目包名下面,准确的说是“包名.wxapi.WXEntryActivity”这样才能正常使用。然而问题就出在这里,shareSDK给出的jar包里的这个类的包名不是我们的包名啊,这样我们在使用的时候虽然可以打开微信登录界面,但是无法接收到回调结果!就为此事我还咨询过shareSDK的客服人员,然而他叫我把包名给他,然后他给我生成了一个jar包,并让我放到Unity工程中再试一下。果然是可以的正常使用了。但是问题又来了,如果我又有很多新的项目或者包名修改的话,那我是不是都要找他们客服呢?客服给出的解释是这个很麻烦,需要的时候找他就是了。对此回答我……,好吧既然不让我来生成jar包,那我就看下他的给的jar包是怎样的了:

请注意关键类WXEntryActivity,继承的是shareSDK封装的cn.sharesdk.wechat.utils.WechatHandlerActivity,然后重写两个方法就可以了。但是请注意WXEntryActivity的包名一定是当前项目包名.wxapi.WXEntryActivity,否则无法回调。好了,至于怎么把这个类打包成jar包就自行搜索下别的文章吧,以及这两个重新的方法怎么写其实shareSDK的登录例子已经给出来了,我这里还是贴一下吧:

/** 微信客户端回调activity示例 */
public class WXEntryActivity extends WechatHandlerActivity {

    /** * 处理微信发出的向第三方应用请求app message * <p> * 在微信客户端中的聊天页面有“添加工具”,可以将本应用的图标添加到其中 * 此后点击图标,下面的代码会被执行。Demo仅仅只是打开自己而已,但你可 * 做点其他的事情,包括根本不打开任何页面 */
    public void onGetMessageFromWXReq(WXMediaMessage msg) {
        Intent iLaunchMyself = getPackageManager().getLaunchIntentForPackage(getPackageName());
        startActivity(iLaunchMyself);
    }

    /** * 处理微信向第三方应用发起的消息 * <p> * 此处用来接收从微信发送过来的消息,比方说本demo在wechatpage里面分享 * 应用时可以不分享应用文件,而分享一段应用的自定义信息。接受方的微信 * 客户端会通过这个方法,将这个信息发送回接收方手机上的本demo中,当作 * 回调。 * <p> * 本Demo只是将信息展示出来,但你可做点其他的事情,而不仅仅只是Toast */
    public void onShowMessageFromWXReq(WXMediaMessage msg) {
        if (msg != null && msg.mediaObject != null
                && (msg.mediaObject instanceof WXAppExtendObject)) {
            WXAppExtendObject obj = (WXAppExtendObject) msg.mediaObject;
            Toast.makeText(this, obj.extInfo, Toast.LENGTH_SHORT).show();
        }
    }

}

其实还有个办法就是使用微信原生提供的SDK来做也是可以的,不过既然使用了shareSDK就没这个必要了。

Unity使用官方sdk实现微信、QQ、微博三方登录(Android):http://blog.csdn.net/yangxuan00/article/details/53391319

Android微信授权登录、获取Wx用户信息,解决无法回调问题:
http://blog.csdn.net/cs_li1126/article/details/49387539

unity3d快速集成指南
http://wiki.mob.com/unity3d%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E6%8C%87%E5%8D%97/

Android Studio工程的使用:http://bbs.mob.com/thread-22130-1-1.html

你可能感兴趣的:(unity,微信)