Saya menggunakan plugin ini untuk mengimplementasikan Layanan Game Google Play di Ionic React/Capacitor proyek.

Namun, ketika saya memanggil GameServices.showLeaderboard("abcdefghijklmnopqr");, logcat menunjukkan yang berikut:

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

Seperti yang Anda lihat, methodData kosong.

Saya sama sekali tidak tahu tentang Java (karenanya mengapa saya menggunakan Capacitor), tetapi ini adalah satu-satunya bagian kode yang dapat saya temukan yang terlihat terkait dari jarak jauh, di android\src\main\java\GameServices.java, di tautan 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");
                    }
                });
    }

Bisakah Anda membantu saya mengatasi masalah ini? Tampaknya menjadi satu-satunya plugin Kapasitor Google Play Game yang berfungsi dari jarak jauh ...

Edit 1 Saya harus mencatat, bahwa metode GameServices.signIn(); berfungsi dengan baik.

Edit2: Mencoba menelepon GameServices.unlockAchievement("abcdef"); juga tidak berhasil, mencatat Achievement ID must not be null or empty. Rupanya tidak ada metode, yang membutuhkan argumen, yang berhasil.

-1
traxx2012 9 Mei 2021, 11:29

1 menjawab

Jawaban Terbaik

Setelah mengobrak-abrik semua kode plugin, saya menyadari metode mengharapkan objek sebagai parameter.

Ini bekerja:

GameServices.showLeaderboard({leaderboardId: "abcdefghijklmnopqr"});
0
traxx2012 9 Mei 2021, 11:56