Capacitor 插件不将参数传递给 java

tra*_*012 2 java android google-play-games capacitor capacitor-plugin

我正在使用此插件在 Ionic React/Capacitor 项目中实现 Google Play 游戏服务。

但是,当我调用 时GameServices.showLeaderboard("abcdefghijklmnopqr");,logcat 显示以下内容:

05-09 07:44:51.544 15437 15524 V Capacitor/Plugin: To native (Capacitor plugin): callbackId: 129018517, pluginId: GameServices, methodName: showLeaderboard
05-09 07:44:51.544 15437 15524 V Capacitor: callback: 129018517, pluginId: GameServices, methodName: showLeaderboard, methodData: {}
05-09 07:44:51.545 15437 15502 W GameServices: showLeaderboard called without providing leaderboardId
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,它methodData是空的。

我完全不了解 java(因此我使用 Capacitor),但这是我能找到的唯一一段看起来远程相关的代码,android\src\main\java\GameServices.java在 GitHub 链接中。

@PluginMethod()
    public void showLeaderboard(final PluginCall call) {
        final String leaderboardId = call.getString("leaderboardId");
        if (leaderboardId == null) {
            Log.w(TAG, "showLeaderboard called without providing leaderboardId");
            return;
        }
        Log.d(TAG, "showLeaderboard called with id: " + leaderboardId);

        final GoogleSignInAccount lastSignedInAccount = GoogleSignIn.getLastSignedInAccount(getContext());
        if (null == lastSignedInAccount) {
            Log.w(TAG,
                    "cannot find last signed in account, either services are disabled or fingerprint doesn't match services account");
            call.resolve();
            return;
        }

        Games.getLeaderboardsClient(getContext(), lastSignedInAccount).getLeaderboardIntent(leaderboardId)
                .addOnCompleteListener(task -> {
                    if (task.isSuccessful()) {
                        Log.d(TAG, "showLeaderboard:getIntent:success");
                        saveCall(call);
                        startActivityForResult(call, task.getResult(), RC_LEADERBOARD_UI);
                    } else {
                        Log.e(TAG, "showLeaderboard:getIntent:error");
                        call.reject("showLeaderboard:getIntent:error");
                    }
                });
    }
Run Code Online (Sandbox Code Playgroud)

您能帮我解决这个问题吗?它似乎是唯一可以远程工作的 Google Play Games Capacitor 插件......

编辑 1: 我应该指出,该GameServices.signIn();方法效果很好。

Edit2: 尝试调用GameServices.unlockAchievement("abcdef");也不起作用,正在记录Achievement ID must not be null or empty。显然,没有任何需要论证的方法是有效的。

tra*_*012 6

在浏览了所有插件代码后,我意识到这些方法需要对象作为参数。

这有效:

GameServices.showLeaderboard({leaderboardId: "abcdefghijklmnopqr"});
Run Code Online (Sandbox Code Playgroud)