Quantcast
Jump to content


Want to Publish Games on Galaxy Store using UDP?


Recommended Posts

2021-06-07-01-banner_v2.jpg

Unity Distribution Portal (UDP) lets you distribute your games to multiple app stores through a single hub. UDP repacks your Android build with each store’s dedicated In-App Purchase SDK to make your game compatible with the separate app stores (Android alternative app stores). In this tutorial, you will learn the procedure for publishing a game on Galaxy Store using the UDP console. All you need to do is implement in-app purchases (IAP) using UDP. UDP then automatically repacks your game into store-specific builds. Follow the tutorial to integrate UDP into your game and publish it on Galaxy Store.

Before you start

We recommend that you implement UDP in your game towards the end of the development cycle. It is easier to implement UDP at this stage as you have already decided what your game’s IAP items are. Make sure you have completed your game before diving into the UDP implementation. We have developed a sample coin collecting game (see Figure 1) in Unity and we’ll show you how we implemented UDP into this game.


2021-06-07-01-01.jpgFigure 1: Preview of the sample game developed in Unity.


Note that there are three types of Samsung IAP items: consumable (single use, re-purchasable), non-consumable (unlimited use, not re-purchasable), and subscription (unlimited use while active). Since UDP does not support subscriptions, there is no guidance for implementing subscription items in this post.

Now that you know when to implement UDP and which Samsung IAP items are supported, we’re ready to begin with the development procedure.

Create a game in the UDP console

After signing in to UDP, please follow the steps below:

  1. Go to My Games -> ADD GAME, enter the game title, and click on CREATE. After that, you are automatically moved to the Game Info tab.
  2. In the Game Description tab, provide some basic information (metadata, description, visual assets, and ratings).
  3. Click on SAVE. You are not required to complete all sections at this time.

Integrate UDP in Unity and link it to the UDP console

There are two ways to integrate UDP in Unity: using the UDP package or Unity IAP. We used the UDP package for this blog. To do this, follow the steps below:

  1. In the Unity editor, go to Window -> Package Manager, select All packages -> Unity Distribution Portal -> Install.
  2. To enable UDP in your project, access Window -> Unity Distribution Portal -> Settings.
  3. Create a new Unity project ID (if required, or else use an existing one) in the Services Window. To do this, click on Go to the Services Window, select your organization, and then click Create.
  4. Obtain the client ID from the UDP console: go to the Game Info tab of the UDP console, scroll down to Integration Information, and copy your Client ID using the COPY button.
  5. Now, go back to Window -> Unity Distribution Portal -> Settings, paste the client ID into the relevant field, and finally click on Link Project to this UDP game.

Now you have successfully linked your Unity project to the game created on the UDP console. If you’re having problems, go here to try some troubleshooting methods before jumping into the next section.

Register IAP items in UDP

There are two IAP products in our sample game: “Super Jump” (consumable) and “Upgraded Player” (non-consumable). We need to add these products in the UDP console so they can be purchased inside the game. We can register the items directly either on the UDP console or in the Unity editor.

Follow the steps below for the UDP console:

  1. Go to the Game Info tab of the UDP console, scroll down to In-App Purchases, and select Add Item. Do not forget to click on EDIT INFO, if required.
  2. Provide a valid product ID, product name, price (USD), and description. Select if the item is consumable or non-consumable, then click SAVE. You can add as many products as you have in your game. For our sample game, we have added a consumable and a non-consumable item with the product IDs “superjump1” and “upgradeplayer1” respectively. Please remember the IDs you choose as these are required while initiating purchases.
  3. You can manage the prices in different currencies for each product individually by clicking on Manage amounts and currencies. You can also automatically convert your base price (USD) to different currencies for all your products at once by clicking Convert.
  4. Select SAVE in the top right corner to save your changes.
  5. In Unity, go to Window -> Unity Distribution Portal -> Settings, and click on Pull to retrieve your saved IAP items from the UDP server. Now, you can see all the items are added to the IAP Catalog.

You can also add IAP items in Unity directly in the IAP Catalog by clicking on Add New IAP Product, and then selecting Push to save your products to the UDP server (see Figure 2). In addition, there are many manipulation processes for adding IAP items (for example, bulk import and CSV template). Click here to learn more.


2021-06-07-01-02.jpgFigure 2: IAP Catalog under UDP Settings in Unity.


Initialize the UDP SDK in Unity

To access the UDP SDK, we need to declare the UDP namespace inside the game manager script. Please note that “player.cs” is the manager script in our sample project and is attached to the main player game object in the editor as a component. Hence, from now on we continue editing the codes into this script to enable all the UDP functionalities. Follow the steps below:

  1. Add the following line at the beginning to access the UDP libraries.

    using UnityEngine.UDP; 
    
  2. Make the manager code (player.cs) inherit from the IInitListener interface.

    public class player : MonoBehaviour, IInitListener
    
  3. In the Start() function of the manager (player.cs) class, call the Initialize() method.

    StoreService.Initialize(this);
    
  4. The IInitListener then returns a success or failure message to inform your game if the initialization was successful. Implement the following methods in the same class to obtain this message: if it is successfully initialized, the OnInitialized() method is invoked with the user information; if it was not initialized, the OnInitializeFailed() is called with an error message.

    public void OnInitialized(UserInfo userInfo){
          Debug.Log("Initialization succeeded");
         // You can call the QueryInventory method here to check whether there are purchases that haven’t been consumed.  
    } 
    public void OnInitializeFailed(string message){
         Debug.Log("Initialization failed: " + message);
    }
    

If you’d like more guidance, check out Initialize the UDP SDK in the Unity documentation for more detailed information. Otherwise, continue to the next section.

Query the purchased IAP items

After the initialization is successful, we need to retrieve the previously purchased non-consumable and unconsumed products when the user launches the game. Call the QueryInventory() method of the UDP SDK to get the product information (product name, ID, description) for non-consumable purchases and consumable purchases that have not yet been consumed. Follow the steps below:

  1. It is necessary for the manager script (player.cs) to inherit the IPurchaseListener interface along with the IInitListener to implement the QueryInventory() method.

    public class player : MonoBehaviour, IInitListener, IPurchaseListener
    
  2. After that, we need to override all the required methods for the IPurchaseListener interface in our class. Although we show only the OnQueryInventory() and OnQueryInventoryFailed() methods here, we gradually complete the others in subsequent sections.

    public void OnQueryInventory(Inventory inventory){
          //Query inventory succeeded
          Debug.Log("Query inventory succeeded");
          IList<ProductInfo> productList = inventory.GetProductList();
          if(productList != null){
              for(int i=0; i<productList.Count;i++){
                   if(productList[i].ProductId=="upgradeplayer1"){
                       playerMaterial = Resources.Load<Material>("UDPMaterial");
                       MeshRenderer meshRenderer = GetComponent<MeshRenderer>();
                       meshRenderer.material = playerMaterial;
                   }
              }
          }
    }
    public void OnQueryInventoryFailed(string message){
          Debug.Log("Query Inventory failed");
    }
    

    As you can see, a few actions have been taken inside the method depending on the product ID. Similarly, you can build some logic here (for example, check for unconsumed products and purchased products that have not been delivered) based on your game design.

  3. Finally, call the QueryInventory() method on a successful initialization inside the OnInitialized() method that was implemented in the previous section.

    public void OnInitialized(UserInfo userInfo){
           Debug.Log("Initialization succeeded");
           // You can call the QueryInventory method here to check if there are purchases that haven’t been consumed.  
           StoreService.QueryInventory(this);
    }  
    

For further information about query inventory in UDP, go here.

Purchase IAP products

In our sample game, there are two UI buttons (see Figure 1), the “Buy Super Jump” and the “Upgrade Player.” These buttons allow users to purchase consumable and non-consumable items respectively inside the game. Please follow the steps below to accomplish these button actions:

  1. Declare two button variables in the beginning of the player class (player.cs).

    public Button buySuperJumpButton;
    public Button upgradePlayerButton;
    
  2. Add two listener methods, OnBuySuperJumpButton and OnUpgradePlayerButton, at the end of the Start() method of the player class (player.cs).

    buySuperJumpButton.onClick.AddListener(OnBuySuperJumpButton);
    upgradePlayerButton.onClick.AddListener(OnUpgradePlayerButton);
    
  3. Implement two listener methods in the same class for the button listeners in the previous section. These enable the “Buy Super Jump” and “Upgrade Player” buttons to initiate purchasing the respective IAP items through invoking the Purchase() method of the UDP SDK. Please note, we have used the item IDs we registered in the “Register IAP items in UDP” section.

    void OnBuySuperJumpButton(){
           //initiate purchasing a super jump item
           StoreService.Purchase("superjump1", "", this);     
    }
    
    void OnUpgradePlayerButton(){
           //initiate purchasing an upgraded player item
           StoreService.Purchase("upgradeplayer1", "", this);
    }
    
  4. The overriding method OnPurchase() is triggered if the purchase is successful. In other cases, the OnPurchaseFailed() method is invoked with an error message. If the item is consumable, consume the product here. Otherwise, deliver the product.

    public void OnPurchase(PurchaseInfo purchaseInfo){
                // The purchase has succeeded.
                // If the purchased product is consumable, you should consume it here.
                // Otherwise, deliver the product.
                if (purchaseInfo.ProductId == "upgradeplayer1"){
                     playerMaterial = Resources.Load<Material>("UDPMaterial");
                     MeshRenderer meshRenderer = GetComponent<MeshRenderer>();
                     meshRenderer.material = playerMaterial;
                }
                else if(purchaseInfo.ProductId == "superjump1"){
                            StoreService.ConsumePurchase(purchaseInfo, this);
                }
    }
    
    public void OnPurchaseFailed(string message, PurchaseInfo purchaseInfo){
                Debug.Log("Purchase Failed: " + message);
    }
    
  5. Save the script and go back to the Unity editor to add references for the UI buttons to the variables of the “player.cs” script that we declared in step 1.

We have completed purchasing IAP items inside our game. However, notice that in step 4, we only delivered the non-consumable item and invoked the ConsumePurchase() method for the consumable item.

Consume IAP products

We need to implement the overriding OnPurchaseConsume() and the OnPurchaseConsumeFailed() methods in the IPurchaseListener interface to consume and deliver the consumable IAP items. See the implementation below:

 public void OnPurchaseConsume(PurchaseInfo purchaseInfo){
            // The consumption succeeded.
            // You should deliver the product here. 
            if (purchaseInfo.ProductId == "superjump1"){
                superJump++;
            }
}

public void OnPurchaseConsumeFailed(string message, PurchaseInfo purchaseInfo){
            // The consumption failed.
}

We have delivered the “Super Jump” item by increasing the counting value. You can implement your game logic here according to your game design. Look here to find out more about consuming IAP products.

Validate in-app purchases

UDP performs client-side validation automatically. When a user purchases an IAP product, Galaxy Store returns the payload and signature. The UDP SDK then validates the signature. If validation fails, the purchase fails accordingly. You can also validate purchases on the server-side. See validating purchases on the server side to implement this functionality.

Build and test your game

Before building your game, add a UDP sandbox tester to verify that your IAP implementation is working. Go to Window -> Unity Distribution Portal -> Settings -> UDP Sandbox Test Accounts -> Add new test account, provide a tester’s email and password, and finally, don’t forget to click Push to save the update to the UDP server.

Now build an APK by going to File -> Build Settings -> Android -> Build and providing all the necessary basic information in Player Settings (File -> Build Settings -> Player Settings). For more information on building for Android, see Building apps for Android. After successfully building the APK, deploy it to the tester’s Galaxy device and assess the IAP functionality. Next, check the test status in the UDP console by going to the Game Info tab and then scrolling down to Sandbox Testing.

Publish your game on the UDP console

Once you have finished building and testing your game, upload the binary to the UDP console (Game Info -> Binary). Finalize all the game information (Game Description, Ads, Premium Price, App Signature) and then release the game by clicking RELEASE before publishing.

Go to the Publish tab on the UDP console, sign in to Galaxy Store with your commercial account, and then publish your game after UDP has successfully repacked it. You can later check the submission status in the Status tab of the UDP console. See details about publishing games on the UDP console here.

Conclusion

This tutorial demonstrates the entire process of publishing a game on Galaxy Store through the UDP console. It also uses the UDP package instead of Samsung IAP for integrating IAP into the game for Galaxy Store. UDP then repacks the game with the Samsung IAP automatically before it is submitted to Galaxy Store. Therefore, we hope this tutorial encourages you to develop games in Unity and publish on Galaxy Store easily through UDP Console.

Additional resources on the Samsung Developers site

This site has many resources for developers looking to build for and integrate with Samsung devices and services. Stay in touch with the latest news by creating a free account or by subscribing to our monthly newsletter. Visit the Marketing Resources page for information on promoting and distributing your apps. Finally, our developer forum is an excellent way to stay up-to-date on all things related to the Galaxy ecosystem.

View the full blog at its source

Link to comment
Share on other sites



  • Replies 0
  • Created
  • Last Reply

Top Posters In This Topic

Popular Days

Top Posters In This Topic

Popular Days

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Similar Topics

    • By Samsung Newsroom
      View the full blog at its source
    • By Samsung Newsroom
      View the full blog at its source
    • By Samsung Newsroom
      More improvements to Seller Portal were released at the end of September. This past month, the Seller Portal team made some changes based on requests from you. Also, learn more about two upcoming events in October that will give you the opportunity to provide us additional feedback.
      Settlement and financial reports include local currency information
      New local currency information has been added to the settlement and financial reports. The type of currency is defined in the Payment Currency column (for example, USD) and reflects where the sales occurred. There are new local currency columns for sales, commission, transaction fee, and VAT.
      Seller Portal timeout
      After you log in to Seller Portal, an inactive session remains open for up to 24 hours. That means you only have to log in to Seller Portal once a day and won’t see the login pop-up notification every 20 minutes. If your session is idle for 24 hours, you are automatically logged out and you will receive a pop-up notification 10 minutes prior to being logged out. For security purposes, remember to log out of Seller Portal when you have completed your tasks.
      Requirements for Samsung IAP and Android R
      If your app is integrated with Samsung In-App Purchase (IAP) version 6.0 or earlier with target API level 30 (Android R) or higher, an Android policy change requires an update to the manifest file. Without this update, Android R (or higher) users may not be able to make a payment.
      To the https://developer.android.com/training/basics/intents/package-visibility manifest file, add the following:
      <queries> <package android:name="com.sec.android.app.samsungapps" /> </queries> IAP subscriptions and your customers in India
      The Reserve Bank of India issued a regulation that, starting October 1, 2021, customers in India must consent to renew a subscription at the end of a subscription period. Auto-recurring (automatically renewed) subscriptions are no longer allowed.
      If you are using Samsung IAP, your subscription customers in India will automatically receive an email notification to renew their subscription. If you are using another payment service provider for your subscription items, you must consult with this payment service provider about the changes you need to make to comply with this regulation.
      See this Seller Portal notice and the IAP Subscription Guide for more information.
      IAP beta testing
      The Samsung In-App Purchase (IAP) team needs your help! If you have published an app or game integrated with Samsung IAP, you may be eligible to participate in an upcoming beta test to review and provide feedback on the following features:
      Manage item prices and information separately from app information Change the status of each item to active/inactive, when necessary Provide a price template that allows you to manage all items with the same price Look for an announcement in October with more information, including how you can apply.
      SDC21 is coming
      Join us online for the Samsung Developer Conference on October 26th. See what’s cooking with development tools and our latest technology. Learn from and network with our experts and your fellow developers and designers.
      Shape. Design. Create.
      Additional resources on the Samsung Developers site
      This site has many resources for developers looking to build for and integrate with Samsung devices and services. Stay in touch with the latest news by creating a free account and subscribing to our monthly newsletter. Visit the Marketing Resources page for information on promoting and distributing your apps. Finally, our Developer Forum is an excellent way to stay up-to-date on all things related to the Galaxy ecosystem.
      View the full blog at its source
    • By Samsung Newsroom
      The Galaxy Store Seller Portal team has been busy, bringing you many new and updated features. Let’s check them out!
      Galaxy Store Seller Portal Policy page
      Seller Portal-related policies are being collected and organized onto a single web page. Content about app distribution, pricing, and legal requirements that are available in separate notices, guides, and pages can all be viewed from the Galaxy Store Seller Portal Policy page. Bookmark this page and stay up-to-date on any new or updated policies.

      Galaxy Store badge images
      Galaxy Store badges are used to link to your app detail page or brand page. Samsung also provides an image, in different languages, for your link. Previously you had to create a badge URL in order to download a badge image. The UI has been updated to allow you to download a badge image at any time, without having to create a badge URL.
      For more information about Galaxy Store badges, see Galaxy Store Badge Promotion.

      App re-registration
      If your app fails to pass the pre-review phase, you can quickly and easily re-register the app to fix the issues. After reviewing the reasons for rejection, click the Re-register button from the app list or the Reasons for Approval Rejection window. Your app will move to the Re-Registering status, allowing you to edit your app information.

      Support for Galaxy Watch4 apps
      Galaxy Watch4 apps registered in Seller Portal can only be sold in China. To sell your Galaxy Watch4 apps in any other country, register them in Google Play. Note that Galaxy Store only supports .apk files. Therefore any .aab file must be converted before it can be uploaded to Seller Portal. For more information about registering a Galaxy Watch4 app in Seller Portal, refer to this Seller Portal notice.

      Support for Galaxy Z Fold3 and Flip3
      The new Galaxy Z devices have been released and are added to Seller Portal’s list of supported devices. If your existing uploaded binaries support these devices, you don’t need to do anything to start selling your apps on these devices. To check if these devices are supported by your app, go to the Binary tab and click Selected Devices. In the Detailed Device Settings window, locate the Galaxy Z Flip3 5G and Galaxy Z Fold3 5G phones and verify their checkboxes are selected.

      Seller Portal newsletter archive
      Did you miss any of the earlier issues of the Seller Portal newsletter? You can view past versions from the archive page. Sign up for email notifications (Seller Portal > Profile) and have the monthly newsletter delivered directly to your inbox. Don’t miss out on future announcements!

      Additional resources on the Samsung Developers site
      This site has many resources for developers looking to build for and integrate with Samsung devices and services. Stay in touch with the latest news by creating a free account or by subscribing to our monthly newsletter. Visit the Marketing Resources page for information on promoting and distributing your apps. Finally, our developer forum is an excellent way to stay up-to-date on all things related to the Galaxy ecosystem.
      View the full blog at its source





×
×
  • Create New...