栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 游戏开发 > 其他

cocos游戏需要获取安卓原生现在登录的用户信息

其他 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

cocos游戏需要获取安卓原生现在登录的用户信息

cocos游戏需要获取安卓原生现在登录的用户信息,需要安卓给他发信息。最简单的方法是cocos就是个单独的游戏,进去之后要重新登录一下,登录用的账号密码还是安卓里面的,用的一个数据库,这样数据也是同步的,但是进入游戏还要登录,感觉用户体验不好,于是想办法把安卓的数据传递到cocos里。
一种是cocos打包为原生安卓,一种是打包为web-mobile,用WebView显示,我不太想打包为原生安卓,因为编译非常慢
于是采用web-mobile
使用了这个方法
https://www.jianshu.com/p/3cb256de46d3

cocos 代码


export class Bus {
    static curUser = null

    static putCurUser (window) {
        if (window.androidObject && window.androidObject.getCurUser) {
            // Comm 
            // Bus.curUser=User.achievementId
            // cc.log("Bus.curUser getCurUser have ")
            // // 直接拿来字符串可以赋值吗? 就是赋值了一个字符串是吧。。
            // Bus.curUser=  window.androidObject.getCurUser()
            // cc.log("Bus.curUser ",Bus.curUser)
            // cocos 弹窗

            // Comm 
            // Bus.curUser=User.achievementId
            // 可以
            // 游戏界面就没有 Bus 了 因为没有import 呀
            cc.log("Bus.curUser getCurUser have ")
            // 直接传递一个java对象应该是不行的,传递json字符串吧
            var userStr = window.androidObject.getCurUser()
            Bus.curUser = JSON.parse(userStr)
            //   Bus
            // Bus
            // Bus.curUser=  window.androidObject.getCurUser()
            cc.log("Bus.curUser ", Bus.curUser)
            // cocos 弹窗
            // this.createAlert(1,1,JSON.stringify(Bus.curUser))
        }


    }
}

安卓

package com.example.whatrubbish.fragment;

import android.annotation.SuppressLint;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.JavascriptInterface;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.ViewModelProvider;

import com.example.whatrubbish.Bus;
import com.example.whatrubbish.databinding.FragmentWebBinding;
import com.example.whatrubbish.entity.User;
import com.example.whatrubbish.ui.notifications.NotificationsViewModel;


public class SplitDropRubFragment extends Fragment {

    private NotificationsViewModel notificationsViewModel;
    private FragmentWebBinding binding;

    public SplitDropRubFragment(String url) {
        this.url = url;
    }

    String url;
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater,
                             ViewGroup container, Bundle savedInstanceState) {
        notificationsViewModel =
                new ViewModelProvider(this).get(NotificationsViewModel.class);

        binding = FragmentWebBinding.inflate(inflater, container, false);
        View root = binding.getRoot();

        final TextView textView = binding.textNotifications;
        notificationsViewModel.getText().observe(getViewLifecycleOwner(), textView::setText);

        initWeb();

        return root;
    }

    //@SuppressLint("JavascriptInterface")
    void initWeb() {
        WebView webview=   binding.Toweb;

        webview.loadUrl(url);
        //1,js调用安卓
        webview.getSettings().setJavaScriptEnabled(true);//这里必须开启
        //把当前JavaH5Activity对象作为androidObject别名传递给js
        //js通过window.androidObject.androidMethod()就可以直接调用安卓的androidMethod方法
        webview.addJavascriptInterface(this, "androidObject");

    }

    //应该不能直接传递一个 java的类吧
    //js调用安卓,必须加@JavascriptInterface注释的方法才可以被js调用
    @JavascriptInterface
    public String  getCurUser() {
        Log.i("qcl0228", "js调用了安卓的方法");
        String json = Bus.gson.toJson(Bus.curUser);
        //return Bus.curUser;
        Log.i("json", "getCurUser: "+json);
        return json;
    }

    @Override
    public void onDestroyView() {
        super.onDestroyView();
        binding = null;
    }
}

一开始还在想,打包成html他是放在canvas里面,我数据是传到windows里面的,怎么给他传到canvas里面去呢,还以为没有可行性。后来想通了,我是在cocos的代码里直接调用windows这个对象,在那个代码里,这个对象我是拿得到的,拿到了就都可以用了

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/903095.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号