我正在尝试弄清楚如何使用Google Play自定义应用发布API使用 C# 发布专用应用程序,但我无法找到上传或通过 APK 的方法。
这里的文档给出了如何做到这一点的示例:
Path apkPath = Paths.get("PATH_TO_APK");
ByteArrayContent apk =
new ByteArrayContent("application/octet-stream", Files.readAllBytes(apkPath));
CustomApp appMetadata =
new CustomApp()
.setTitle("APPLICATION TITLE").setLanguageCode("en_US");
CustomApps.Create request =
apiClient.accounts() // Playcustomapp apiClient
.customApps().create(DEV_ACCOUNT_ID, appMetadata, apk);
CustomApp response = request.execute();
我已经导入了 NuGet 包Google.Apis.Playcustomapp.v1
并创建了应用元数据
CustomApp appMetadata = new CustomApp() {
Title = "Whatsapp",
LanguageCode = "en-US"
};
有 2 个可用的 API 请求,它们是:
var createRequest = new AccountsResource.CustomAppsResource.CreateRequest(
service, appMetadata, 9197907806840XXXXX);
var createMediaUpload = new AccountsResource.CustomAppsResource.CreateMediaUpload(
service, appMetadata, 9197907806840XXXXX, ms, "application /octet-stream");
两者都给了我错误 404。这是因为我没有通过需要上传的APK。我可以从哪里发送此APK?CreateMediaUpload
中有一个stream
参数,但它也没有帮助。
错误:
CreateRequest
:解析值时遇到意外字符:<。路径"。如何在此处传递APK
路径?
CreateMediaUpload
:在此服务器上找不到请求的 URL /upload/9197907806840917992/customApps?uploadType=resumable
。
有人可以帮助我吗?
您找到的文档是一个 Java 示例。在随机猜测如何把这些碎片放在一起之后,我终于明白了。
请记住,对于您每天创建专用应用程序的频率,有一些神奇的未记录限制。每天大约 15 个应用程序。之后,您达到该限制,您将收到以下消息错误:
apk通知消息密钥已达到上传限制
static void Main(string[] args)
{
MainAsync(args).GetAwaiter().GetResult();
}
static async Task MainAsync(string[] args)
{
var email = "yourserviceaccountmail";
ServiceAccountCredential credential = new ServiceAccountCredential(
new ServiceAccountCredential.Initializer(email)
{
Scopes = new[] { PlaycustomappService.Scope.Androidpublisher }
}.FromPrivateKey("client_secrets.json"));
CustomApp appMetadata = new CustomApp();
appMetadata.Title = "YOUR APP";
appMetadata.LanguageCode = "en_US";
// Create the service.
var service = new PlaycustomappService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = "Custom Apps API Sample",
});
var acc = new AccountsResource(service);
using (var stream = new FileStream("app-release.apk", FileMode.Open))
{
long devIAccountd = 12345678L;
var app = acc.CustomApps.Create(appMetadata, devIAccountd, stream, "application/octet-stream");
var response = await app.UploadAsync();
if (response.Exception != null)
{
Console.WriteLine("Someting went wrong:");
Console.WriteLine(response.Exception.Message);
}
if (response.Status == Google.Apis.Upload.UploadStatus.Completed)
{
Console.WriteLine("Succeeded!");
}
}
}