Huawei AppGallery Connectは、便利なクラウドストレージサービスを提供すると主張するクラウドストレージ(CloudStorage)サービスを提供します。アプリケーション開発者が使用する場合、サーバーの展開に注意を払うことなく直接使用できます。
現在、この機能はまだベイト段階にあり、私は最初にそれを試しました。
1.環境およびアプリケーション情報
バージョン名 | 統合環境 | 試験装置 |
---|---|---|
agconnect-storage:1.3.1.100 | Unity 2019.4.17f1c1 | 栄光の魔法2 |
AGCアドレス:https://developer.huawei.com/consumer/cn/service/josp/agc/index.html
2.オープンクラウドストレージサービス
PS:クラウドストレージサービスは現在ベータステータスです。使用する前にアクティベーションを申請するためにメールを送信する必要があります。
https://developer.huawei.com/consumer/cn/doc/development/AppGallery-connect-Guides/agc-cloudstorage-apply
開始手順は、インターフェイスをクリックするだけです。ここでは詳しく説明しません。前のドキュメントを参照してください。
https://developer.huawei.com/consumer/cn/forum/topic/0201411971207960391?fid=0101271690375130218
3. Unityパッケージをインポートします:
公式文書:
https://docs.unity.cn/cn/Packages-cn/[email protected]/manual/cloudstorage.html
1. Unity Hubをダウンロードし、Unityhttps://unity.cn/releasesをインストールし
ます。ダウンロードとインストールについては詳しく説明しません。
2. Android環境の構成:以下のスクリーンショットを参照してください
3. HuaweiServicesパッケージをインポートし
ます。最初に、リンクからパッケージをダウンロードします。
https://share.unity.com/receive/?thread=237D-JA9D&packageCode=DzIiMvUpSO7GsT3dPV2M8qyBaw3R5bcbRhwD5RurQNM#keyCode=lkkIcH1nco7DIoL90AOReE0hwINGMsFP7mjwBAkg4_c
(現在、パッケージはまだ完全に外の世界に開かれていません)
ローカルにダウンロードした後、アセットをクリックします–Unityでパッケージをインポートします
次に、必要なパッケージを選択して、[インポート]をクリックします
4.AGC環境の構成
1. HuaweiAGCでパラメーターを構成します。AGCコンソールに戻ります。以前に作成したアプリを見つけます。
https://developer.huawei.com/consumer/cn/service/josp/agc/index.html
2. [マイプロジェクト]-> [ビルド]-[クラウドストレージ]を選択し、[アクティブ化]をクリックしてクラウドストレージサービスをアクティブ化します。デフォルトのストレージインスタンス名を構成する必要があります。(必要に応じて構成します)
認証なしでデータの読み取りと書き込みを容易にするために、セキュリティポリシーは次のように構成されます。
agc.cloud.storage[
match: /{bucket}/{path=**} {
allow read, write: if true;
}
]
3.サービスがアクティブ化されたら、プロジェクト設定インターフェイスに戻り、最新のjsonファイルをダウンロードします。
4.ダウンロードしたばかりのjsonファイルをUnityプロジェクトのAssets / Plugins / Androidディレクトリに配置します。
ダウンロードしたjsonファイルのcloudstorageの下にdefault_storageパラメーターがない場合は、手動で追加してください。ここで追加される値は、手順3で構成されたデフォルトのストレージインスタンスです。
5.UnityでAndroid環境を設定します。
1.AndroidのカスタムリストとGradleをPlayer-Publish設定で有効にします
2.その他の設定でパッケージ名を構成します。AGの公式Webサイトのパッケージ名と一致している必要があることに注意してください。
3. Assets \ Plugins \ Androidパスの下のbaseProjectTmeplate.gradleファイルに対応するプロジェクトレベルのgradleを構成し、次のコンテンツを追加します
allprojects {
buildscript {
repositories {
maven { url 'https://developer.huawei.com/repo/' }
}
}
dependencies {
classpath 'com.android.tools.build:gradle:3.4.0'
classpath 'com.huawei.agconnect:agcp:1.4.2.301'
**BUILD_SCRIPT_DEPS**
}
}
repositories {
maven { url 'https://developer.huawei.com/repo/' }
}
}
- アプリケーションレベルのgradleを構成します。ここでは、Assets \ Plugins \ Androidパスの下のLauncherTmeplate.gradleファイルに対応し、次のコンテンツを追加します。
apply plugin: 'com.android.application'
apply plugin: 'com.huawei.agconnect'
dependencies {
implementation project(':unityLibrary')
implementation "com.huawei.agconnect:agconnect-storage:1.3.1.100"
implementation 'com.huawei.agconnect:agconnect-auth:1.4.2.301'
- マニフェストファイルの構成:ファイルの読み取りと書き込みの読み取りと書き込みのアクセス許可を申請します
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<application
android:allowBackup="false"
android:requestLegacyExternalStorage="true" >
6.クラウドストレージ機能をゼロから開発する
1.インターフェースレイアウト:
GameObject-UI -Buttonを順番にクリックして、ボタンを作成します。チェックボタンをクリックし、右側の[コンポーネントの追加]を選択して、スクリプトファイルを作成および追加します。ファイルに対応するメソッドを作成します
2.クラウドストレージインスタンスを初期化し、読み取りおよび書き込み権限を申請します。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using HuaweiService;
using HuaweiService.CloudStorage;
using System;
public delegate void SuccessCallBack<T>(T o);
public class HmsSuccessListener<T>:OnSuccessListener{
public SuccessCallBack<T> CallBack;
public HmsSuccessListener(SuccessCallBack<T> c){
CallBack = c;
}
public void onSuccess(T arg0)
{
Debug.Log("OnSuccessListener onSuccess");
if(CallBack != null)
{
CallBack.Invoke(arg0);
}
}
public override void onSuccess(AndroidJavaObject arg0){
Debug.Log("OnSuccessListener onSuccess");
if(CallBack !=null)
{
Type type = typeof(T);
IHmsBase ret = (IHmsBase)Activator.CreateInstance(type);
ret.obj = arg0;
CallBack.Invoke((T)ret);
}
}
}
public class testStorageDemo : MonoBehaviour
{
private AGCStorageManagement mAGCStorageManagement;
private string[] permissions =
{
"android.permission.WRITE_EXTERNAL_STORAGE",
"android.permission.READ_EXTERNAL_STORAGE",
};
// Start is called before the first frame update
void Start()
{
AndroidJavaClass javaUnityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject currentActivity = javaUnityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
Activity aaa = HmsUtil.GetHmsBase<Activity>(currentActivity);
ActivityCompat.requestPermissions(aaa, permissions, 1);
}
// Update is called once per frame
void Update()
{
}
public void initAGCStorageManagement() {
mAGCStorageManagement = AGCStorageManagement.getInstance("9105385871708601205-ffeon");
Debug.Log("Instance is: "+ mAGCStorageManagement);
}
public class MySuccessListener : OnSuccessListener
{
private string m_name;
public MySuccessListener(string name)
{
m_name = name;
}
public MySuccessListener()
{
m_name = "default";
}
public override void onSuccess(AndroidJavaObject ex)
{
Debug.Log("download success: " + m_name);
}
}
}
3.ファイルをアップロードします。
public void uploadFile() {
if (mAGCStorageManagement == null){
initAGCStorageManagement();
}
string fileName = "testUnity.jpg";
StorageReference reference = mAGCStorageManagement.getStorageReference(fileName);
string FileFolder = "/storage/emulated/0/AGCSdk/";
string FilePath = FileFolder + fileName;
Debug.Log("FilePath = " + FilePath);
File file = new File(FilePath);
Debug.Log("UploadFile = " + file);
UploadTask task = reference.putFile(file);
task.addOnSuccessListener(new MySuccessListener());
Debug.Log("UploadFile done:");
}
4.ファイルをダウンロードします
public void downloadFile() {
if (mAGCStorageManagement == null){
initAGCStorageManagement();
}
StorageReference reference = mAGCStorageManagement.getStorageReference("test.jpg");
string FileFolder = "/storage/emulated/0/AGCSdk/";
string FilePath = FileFolder + "test.jpg";
Debug.Log("FilePath = " + FilePath);
File file = new File(FilePath);
Debug.Log("File = " + file);
DownloadTask task = reference.getFile(file);
task.addOnSuccessListener(new MySuccessListener("NormalListener"));
Debug.Log("DownloadTask Result:");
}
5.ファイルを削除します
public void deleteFile() {
if (mAGCStorageManagement == null){
initAGCStorageManagement();
}
StorageReference reference = mAGCStorageManagement.getStorageReference("testUnity.jpg");
reference.delete();
Debug.Log("DeleteFileTest success.");
}
6、パッケージテスト
パッケージのインストール後、各ボタンをクリックすると、Android LogcatでUnityキーワードをフィルタリングし、Debug.Logによって出力された関連ログを表示できます。
アップロードおよびダウンロードするときは、agcインターフェース上のファイルの変更に同期的に注意してください。
7.まとめ
フロントエンドアプリケーションの開発にのみ焦点を当て、AGCクラウドストレージサービスを使用して、サーバーの構築、運用、保守を気にすることなく、Unityでクラウドストレージサービス機能を備えたゲームを開発でき、時間と労力を節約できます。さらに、クラウドストレージサービスは、サーバー上のファイルを簡単かつ直感的に管理できる管理者モードと同様のWebコンソールも提供します。
このクラウドストレージサービスには、最も一般的なアップロード、ダウンロード、削除機能に加えて、メタデータの設定などの機能も含まれています。詳細については、公式ドキュメントを参照してください。
詳細については、以下を参照してください。
クラウドストレージサービス開発ガイド:
https://developer.huawei.com/consumer/cn/doc/development/AppGallery-connect-Guides/agc-cloudstorage-introduction
クラウドストレージに関するUnityのドキュメント:
https://docs.unity.cn/cn/Packages-cn/[email protected]/manual/cloudstorage.html
クラウドストレージサービスコードラボ:
https://github.com/AppGalleryConnect/agc-android-demos/tree/master/agc-cloudstorage-demo-java
元のリンク:https://developer.huawei.com/consumer/cn/forum/topic/0201454878602100779?fid=0101271690375130218
著者:メイズム