This function enables support for making in-app purchases and prepares GameMaker Studio 2 by supplying the product ds_list that holds a series of ds_maps with the information on each available purchase. This means that you will need to tell GameMaker Studio 2 all the available purchase options by setting them in individual ds_maps (one for each available purchase), which are then stored within a ds_list, which is then "activated" with this function.
The individual purchase maps that are to be stored in the ds_list should have the following format of key-value pairs:
- "id" - The product ID for the purchase, eg: "LevelPack".
- "title" - The name of the purchase, eg: "Level Pack 1".
- "description" - The description of the purchase, eg: "Level Pack 1 for Catch The Clown".
- "price" - The price of the purchase, eg: "$1.00".
It is worth noting that the only essential keys for any target store setup (per product ID) is the "id".
Activating purchases will also trigger an IAP Event, which creates a special iap_data ds_map of the event type iap_ev_product. This ds_map will have the following additional key:
- "index" - The product ID for the activated product.
If you are activating multiple products, then each product will trigger its own IAP Event of the type iap_ev_product where you can then get the product ID. It is worth noting that the Google Play store (for Android) can only process details for products 20 at a time which can lead to quite long load times for applications with a significant number of products.NOTE: All the key/value pairs that comprise a purchase map are strings!
|product_index||The index of the ds_list that contains the available purchases.|
var purchaseList, purchase1;
purchaseList = ds_list_create();
purchase1 = ds_map_create();
ds_map_add(purchase1, "id", "LevelPack");
ds_map_add(purchase1, "title", "ExtraLevels1");
ds_map_add(purchase1, "description", "Level Pack 1 for Catch The Clown");
ds_map_add(purchase1, "price", "$1.00");
The above code will create a ds_list and a ds_map, which is then populated by the information for making a purchase. This map is added to the list and then activated as an available purchase for the game. Finally the ds_list and ds_map are removed to prevent memory leaks as they are no longer needed.