5个版本

0.2.3 2022年9月12日
0.2.2 2022年8月30日
0.2.1 2022年8月25日
0.2.0 2022年8月16日
0.1.9 2022年8月10日

游戏开发类别中排名第815

MIT/Apache

170KB
2.5K SLoC

Rust 1.5K SLoC // 0.0% comments Kotlin 861 SLoC // 0.3% comments

Crossbow Admob插件

Crate Info Documentation MIT/Apache 2.0 GitHub Stars

关于

本项目是一个用Rust和Kotlin编写的,针对Google Play游戏服务的Crossbow插件。

支持的功能

功能 可用
登录/登出
成就 🆗
排行榜 🆗
事件 🆗
玩家统计 🆗
玩家信息 🆗
保存的游戏 🆗

✅ = 正常工作并已测试 — 🆗 = 正常工作但可能存在错误 — 🛠 = 开发中 — 📝 = 计划中 - ❌ = 不实现 - ❗ = 不计划实现

安装

只需像这样添加Rust依赖项

[dependencies]
crossbow = "0.2.3"
[target.'cfg(target_os = "android")'.dependencies]
play-games-services = "0.2.3"

最后,将以下内容添加到您的Crossbow Android配置中

[package.metadata.android]
plugins_remote = ["com.crossbow.play_games_services:play_games_services:0.2.3"]

入门指南

重要:在开始使用此插件之前,请遵循设置Google Play游戏服务官方指南中的说明。

设置AndroidManifest资源

创建您的资源目录,并在您的Cargo.toml中添加以下内容以导入它

[package.metadata.android]
resources = ["./res/android"]

然后,在您的资源目录中创建文件./res/android/values/games-ids.xml,内容如下

<?xml version="1.0" encoding="utf-8"?>
<!--Google Play game services IDs. Save this file as res/values/games-ids.xml in your project.-->
<resources>
    <!--app_id-->
    <string name="app_id" translatable="false">ADD_YOUR_APP_ID</string>
</resources>

重要:您需要将ADD_YOUR_APP_ID替换为您的应用程序ID。阅读官方说明以获取更多信息。

接下来,在您的Cargo.toml中指定应用程序的AndroidManifest.xml的包和meta_data

[package.metadata.android.manifest]
package = "com.crossbow.play_games"
[[package.metadata.android.manifest.application.meta_data]]
name = "com.google.android.gms.games.APP_ID"
value = "@string/app_id"
[[package.metadata.android.manifest.application.meta_data]]
name = "com.google.android.gms.version"
value = "@integer/google_play_services_version"

就是这样,现在您可以开始使用Play Games服务了!

用法

第一步是插件初始化。在您的Rust项目中,您需要初始化Crossbow实例,然后获取Android插件

#![cfg(target_os = "android")]

use crossbow::android::*;
let crossbow = CrossbowInstance::new();
let play_games: play_games_services::PlayGamesServicesPlugin = crossbow.get_plugin()?;
// Initialize Google Play Games Services
play_games.init(true)?;

在插件初始化之后,您可以使用支持的功能。例如,要登录用户,您可以使用

play_games.sign_in()?;

读取信号

if let Ok(signal) = play_games.get_receiver().recv().await {
    println!("Signal: {:?}", signal);
}

完整的文档您可以在这里找到。

故障排除

  1. 如果您使用 Android 模拟器 - 请确保您使用支持 Google Play 游戏服务 的模拟器。查看类似的 StackOverflow 问题
  2. 如果您一直收到 错误 12501 - 确保指纹、包和资源配置正确。查看类似的 StackOverflow 问题
  3. 如果您一直收到 错误 4 - 确保您使用正确的 Play 商店密钥签名您的应用程序。

感谢和灵感

此插件最初是根据 godot-pgsgp 进行改编和受到启发的。

依赖关系

~0.4–0.9MB
~19K SLoC