Xiaomi Mi Game Centerでゲームを公開する準備をする(Unity、C#)

モバイルゲームとアプリケーションの中国市場は、世界の大部分が閉鎖されたままです。 また、Unityは、開発者がXiaomi Mi Game Centerで直接Unityサービスを使用してゲームを公開できるように設計されたXiaomiとのパートナーシップを発表しました。 それまでの間、公式ウェブサイトには「この機能はまだ有効になっていません。ニュースをお待ちください!」というサインがあります。Xiaomi向けにビルドを準備できます。 そして、もしあなたが幸運なら、それからうまく公開します!



画像



についての記事は何ですか



新しいプラットフォームにゲームを移植する際の最も脆弱なコンポーネントは、ゲーム内購入(IAP)、広告(Ads)、およびゲームサービス(評価、実績、マルチプレイヤー、ソーシャル統合など)です。 Xiaomi Mi Game Centerでのこれらのコンポーネントの実装の機能についてさらに説明します。



免責事項



Xiaomiプラットフォームの活発な開発とUnityとの統合により、この記事の情報の一部は関連性を失う可能性があることに注意してください。 私は2017年の終わりに何が関連していたかについて話します。また、私はUnityのスペシャリストに個人的な通信の断片を引用して謝罪します。 上記のフラグメントには個人情報は含まれておらず、情報提供の目的は広範囲の開発者のみであり、リクエストに応じて削除できます。



Xiaomi Mi Game Centerの特徴



Google PlayとFacebookは中国では利用できません。 これは、Google PlayとFacebookサービスの統合が機能しないことを意味します。 プレーヤーの承認、ゲームのレーティング、実績、その他すべてを独自に実装している場合は、幸運です。 さらに、プラットフォームは非常に湿っていて、多くのレーキがあります。 収益化の点では、すべてが単純です-Xiaomiは承認付きの支払いサービスを実装しましたが、そのサポートは既にUnity IAPに登場しており、広告はUnity Adsでのみ利用可能です。 他の広告サービスは、中国で利用可能であっても許可されていません。
残念ながら、Unity AdsはXiaomiビルドに含めることができる唯一の広告プラットフォームです。
さらに、Unity Adsの場合は、Xiaomi専用の個別のIDを取得する必要があります。 Unity Adsのサポートは、現時点では塗りつぶしが非常に少ないことをすぐに警告しました。
これを始める前に、XiaomiプラットフォームでのUnity Adsの充填率が非常に低いことに注意してください。
スーパー、そしてスーパー)



最初に



組織の問題は最も困難です。 ここでは、多くのことを書いて伝達する必要があります。 まず、Unityサポートに連絡し、Xiaomi Mi Game Centerでゲームを公開することを希望する必要があります。 執筆時点では、すべてのサーバー側のアクションはUnityスペシャリストによって手動で実行されていました。 プロジェクトとアプリ内購入を開始し、すべてのゲーム購入のアプリID、アプリキー、アプリシークレット、およびSKUを取得する必要があります。 また、Unity Adsの新しいIDを取得する必要があります(Google Playの古いIDは使用できません)が、これについては次のセクションで説明します。



私は2つの点に焦点を当てています:



  1. XiaomiのバンドルIDは、Google PlayバンドルIDとは異なる必要があります。 最後に.miを追加しました。com.herocraft.game.free.taptapbuilder.miでした。
  2. SKUゲームの購入にはこのような制限はありませんが、長さは40文字に制限されています。 私たちの場合、SKUも異なります。


次に、 id.unity.com / en / user_clients / settingsページに移動して、IAP構成のすべての設定を取得できます。 UnityプロジェクトIDは、Unityのプロジェクト(すでにUnityサービスを使用している古いプロジェクト)のIDです。たとえば、9f379fb5-39b9-43c9-850c-b4a855e3b82aです。 すぐに、以前に発行したアプリID、アプリキー、アプリを入力して保存する必要があります。 私はこれをしなかったので、長い間問題を探す必要がありました=(



画像



ところで、数日前、中王国の専門家が手紙を送りました。
Mi-Unity開発者ポータルは、現在developer.unity.mi.comで入手できます。
残念ながら、空のプロジェクトがあり、プロジェクトはそうではありません。 これらすべての日常的な手動作業が将来自動化され、便利な開発者コンソールが手に入ることが期待されています。 しかし、これは明日起こりそうにない)



UnityAdsの新しいIDを取得する



UnityAdsの新しいIDが必要です。 Google Play IDは次のように使用できません Xiaomiは、Unity Ads管理パネルの独立したプラットフォームです。 現時点では、Xiaomiプラットフォームはすべての開発者に対して非表示になっています。まず、Unityアカウントに対して有効にするように依頼する必要があります。 これを行うには、unityads-support @ unity3d.comにサポートレターをお送りします。おおよその内容は次のとおりです。
こんにちは! 私のプロジェクトTap Tap Builder(a0853b2f-b5d8-450f-9f8c-5c701ef73c16)でMi Game Centerを有効にしていただけますか? Xiaomiアプリストアでゲームをリリースしたい。 確認のために開発者ID 26590を紹介します。 ありがとう!
プロジェクトの名前とID、および開発者ID(アカウントの[請求]ページに表示されます)を必ず含めてください。 Mi Game Centerをオンにしたら、プロジェクト設定に別のプラットフォームとして追加し、IDを取得してUnity Adsを初期化できます。 次のようになります。



画像



できた! 今、最も単純なものが残っています-技術的な側面。



技術的側面



したがって、プロジェクトですでにUnity IAPを使用しているとしましょう。 そうでない場合、すべてが少し複雑になる可能性があります。 まず、プラグインの混乱にすぐに混乱しました。 [ビルド設定]の[Android]タブには、Xiaomi Game Centerボタンがあります。[追加]をクリックしないでください!



画像



GitHubに統合プロジェクトもあります。そこに行かないでください!



また、Unity Asset StoreにはXiaomiのプラグインがあります。 また、何もインポートしません!



必要なのは、Unity IAPとUnity Ads(Unityの[サービス]タブ)の最新バージョンです!



画像



また、Unity Channelという名前に出会った場合、これがXiaomiとの統合であることに注意してください。 なぜ彼らがより明白な名前を思い付かなかったのかはわかりません)多分これはより一般的な概念です。



IAPを構成する



IAPディレクトリを作成し、まだ購入していない場合はすべての購入を開始する必要があります。 SKUは、Google Playで持っていたものと異なる場合は、Store ID Overidesに入力する必要があります。 この場合、40文字に収まるようにSKUを短くする必要がありました。



画像



完了したら、App Store Exportをクリックします。 すべてがエラーなしで完了したら、さらに先へ進むことができます。



中国人からの重要な注意:
Google PlayとApp Storeは初期化時にサーバー側からIAP製品を取得しますが、Xiaomiはこの機能をサポートしていません。 Xiaomi IAPがその「MiGameProductCatalog.prop」ファイルを必要とするのはそのためです。 このファイルからローカルでIAP製品を取得します。
すなわち すべてを正確に記入し、事前に合意した費用を示すことが重要です(買い物を始めたときにこれを行いました)。 コストを間違えたが、何も機能しなかった。



Unity IAPをXiaomiに切り替えます:



画像



次に、Unity IAP / Receipt Validation Obfuscatorを実行し、クライアントRSA公開キー(ここで取得: id.unity.com/en/user_clients/settings )を下部のフィールドに入力します。



画像



購入のデジタル署名の確認はGoogle Playの場合とまったく同じで、キーのみが異なります。 中国人はゲームを壊し、無料でゲームを購入するのが大好きです。 したがって、デジタル署名を確認することをお勧めしますが、開発者の90%はこの手順をスキップします。 そして、広告に立ち寄りましょう! あなたは私の記事に興味があるかもしれません:



ダミーのためのゲームとモバイルアプリのハッキング



最後にコードを書きます



IAPが機能するには、4つのアクションを実行する必要があります。初期化、ユーザーの承認、購入の完了、デジタル署名の確認。



IAP初期化



IAPの初期化は作成されたディレクトリでローカルに行われるため、これにはネットワークへのアクセスもユーザー認証も必要ありません。



var builder = ConfigurationBuilder.Instance(StandardPurchasingModule.Instance()); builder.Configure<IUnityChannelConfiguration>().fetchReceiptPayloadOnPurchase = true; var catalog = ProductCatalog.LoadDefaultCatalog(); foreach (var product in catalog.allProducts) { if (product.allStoreIDs.Count > 0) { var ids = new IDs(); foreach (var storeId in product.allStoreIDs) { ids.Add(storeId.id, storeId.store); } builder.AddProduct(product.id, product.type, ids); } else { builder.AddProduct(product.id, product.type); } } UnityPurchasing.Initialize(this, builder);
      
      





ここではすべてが単純です。UnityIAPプラグイン内にあるIAPDemoからコピーしました。 サーバーがデジタル署名を返すように、fetchReceiptPayloadOnPurchase = trueを設定することが重要です。 CPUを確認しないと、インストールできません。



初期化に成功すると、IStoreListener.OnInitializedメソッドが呼び出され、すべての購入がIStoreController.products.allに返されます。 次に、ゲームストアのUIを描画し、価格を表示できます。 はい、一般に、Unity IAPを使用している場合、これはすでにわかっています。



ユーザー認証



承認は、アプリケーションの起動時(覚醒時)に、または必要な場合(購入前など)に行うことができます。 リクエストに応じて認証を行いましたが、例を単純化するために、Awakeで実行します。



 public class XiaomiIntegration : MonoBehaviour, ILoginListener { public void Awake() { var appInfo = new AppInfo { appId = "", appKey = "", clientId = "", clientKey = "", debug = true }; StoreService.Initialize(appInfo, this); } public void OnInitialized() { StoreService.Login(this); } public void OnInitializeFailed(string message) { } public void OnLogin(UserInfo userInfo) { } public void OnLoginFailed(string message) { } }
      
      





認証に成功すると、ユーザーIDはuserInfoに保存されます。 残念ながら、評価やその他のサービスで使用できる彼の名前やその他の情報を取得することはまだできません。 自分で書いた評価では、Google PlayまたはCame Centerアカウントのユーザー名の代わりにこのIDを表示します。 中国からのコメント:

ログイン後にユーザーIDを取得できますが、ユーザー名またはユーザーの友達を取得するAPIはありません。

Miアカウントは、FacebookやGoogle Plusとは異なります。 友達リストやSNSはありません。


あなたが中国人でない場合、実際の購入をテストできない非常に重要なニュアンスがあります。 Miアカウントを持っている場合でも。 実際には、最初の承認時に、ユーザーは次のフォームに入力する必要があります。



画像



これは何ですか:
中国政府が要求するのは「個人の実際の情報登録」です。 プレイヤーは、このフォームに本名と中国語IDを入力する必要があります。
「あなたは合格しません!」 テストモード(初期化中のデバッグ= true)では、このフォームは表示されません。



購入と署名の検証



ここではすべてが通常通りです。 統合SKUを使用する必要があることにのみ注意してください。 つまり、特定のもの(私の場合はトリミングされている)ではなく、XiaomiのSKUではなく、Google PlayとApp Storeに使用されるユニバーサルIDです。



 var product = StoreController.products.WithID(sku); StoreController.InitiatePurchase(product);
      
      





購入が正常に完了したら、デジタル署名を確認できます。



 var receipt = args.purchasedProduct.receipt; var validator = new CrossPlatformValidator(GooglePlayTangle.Data(), AppleTangle.Data(), UnityChannelTangle.Data(), Application.identifier); validator.Validate(receipt);
      
      





CPUが検証に失敗した場合、ValidateメソッドはIAPSecurityExceptionをスローします。



おわりに



ご清聴ありがとうございました! いいね、サブスクライブ、そのようなもの)以下は便利なリンクのリストです。



参照資料



developer.unity.mi.com -Mi-Unity開発者ポータル

unity3d.com/ru/partners/xiaomi/guide-Xiaomiをセットアップするためのガイド(まだ利用できません)。

id.unity.com/en/user_clients/settings-Xiaomiのプロジェクト設定

unitytech.github.io/channel/stand-alone-xiaomi-sdk-doc-Xiaomi統合プロジェクト。 Unity IAPを使用していない場合に役立ちます。 そして、おそらく他の何らかの理由で。 このプロジェクトは、Asset Storeのプラグインのように、将来的にBuild Settings / Android / Xiaomi Mi Game Centerに移行するものと想定できます

unityads.unity3d.com/admin-ここから、XiaomiのIDのリクエストを行うことができます。いずれの場合でも、Unityサービスサポート(Unity Adsサポート)のスタッフが必要です。



UPD 06/21/2018



残念ながら、Xiaomiの出版物は期待通りではありませんでした。 多くの努力が費やされました。それは翻訳、中国人とのコミュニケーション、そして多くの欠陥とバグのある粗雑なプラットフォームでした。 サードパーティプロバイダーを使用する可能性のない、政府の要件(ブラックリスト)と非常に低い広告カバレッジの実装。 Herocraftの大手出版社に代わって公開しましたが、ストア内の機能は非常に重要ではなく、現在では1日あたり約200のインストールがあります(気のめいるようです)。

また、自分の運を試してみることにした他の開発者とチャットする機会もありました。多くの人がドラッグ自体に不満を言っています。 すべてに同様の問題と結果があります。 したがって、まだ決定する場合は、準備してください)



All Articles