fastlane 2.149.0 → 2.150.0.rc4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +82 -82
- data/deliver/lib/deliver.rb +0 -1
- data/deliver/lib/deliver/app_screenshot.rb +26 -25
- data/deliver/lib/deliver/options.rb +6 -11
- data/deliver/lib/deliver/runner.rb +7 -21
- data/deliver/lib/deliver/setup.rb +5 -30
- data/deliver/lib/deliver/submit_for_review.rb +155 -90
- data/deliver/lib/deliver/upload_metadata.rb +355 -143
- data/deliver/lib/deliver/upload_price_tier.rb +22 -8
- data/deliver/lib/deliver/upload_screenshots.rb +134 -39
- data/fastlane/lib/fastlane/actions/docs/capture_ios_screenshots.md +1 -1
- data/fastlane/lib/fastlane/actions/docs/upload_to_app_store.md.erb +77 -96
- data/fastlane/lib/fastlane/actions/docs/upload_to_play_store.md +3 -2
- data/fastlane/lib/fastlane/actions/download_dsyms.rb +7 -1
- data/fastlane/lib/fastlane/actions/google_play_track_release_names.rb +74 -0
- data/fastlane/lib/fastlane/actions/set_changelog.rb +23 -20
- data/fastlane/lib/fastlane/actions/slack.rb +1 -1
- data/fastlane/lib/fastlane/actions/spm.rb +7 -0
- data/fastlane/lib/fastlane/actions/upload_symbols_to_crashlytics.rb +1 -32
- data/fastlane/lib/fastlane/lane.rb +3 -3
- data/fastlane/lib/fastlane/swift_fastlane_function.rb +8 -4
- data/fastlane/lib/fastlane/version.rb +1 -1
- data/fastlane/swift/ControlCommand.swift +1 -0
- data/fastlane/swift/Deliverfile.swift +1 -1
- data/fastlane/swift/Fastlane.swift +48 -12
- data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/xcshareddata/xcschemes/FastlaneRunner.xcscheme +3 -9
- data/fastlane/swift/Gymfile.swift +1 -1
- data/fastlane/swift/LaneFileProtocol.swift +2 -5
- data/fastlane/swift/Matchfile.swift +1 -1
- data/fastlane/swift/MatchfileProtocol.swift +1 -1
- data/fastlane/swift/Precheckfile.swift +1 -1
- data/fastlane/swift/RubyCommand.swift +29 -6
- data/fastlane/swift/RubyCommandable.swift +1 -0
- data/fastlane/swift/Runner.swift +85 -13
- data/fastlane/swift/Scanfile.swift +1 -1
- data/fastlane/swift/ScanfileProtocol.swift +1 -1
- data/fastlane/swift/Screengrabfile.swift +1 -1
- data/fastlane/swift/Snapshotfile.swift +1 -1
- data/fastlane/swift/SnapshotfileProtocol.swift +3 -3
- data/fastlane/swift/SocketClient.swift +76 -45
- data/fastlane/swift/SocketClientDelegateProtocol.swift +1 -1
- data/fastlane/swift/SocketResponse.swift +1 -0
- data/fastlane_core/lib/fastlane_core/configuration/config_item.rb +1 -3
- data/fastlane_core/lib/fastlane_core/itunes_transporter.rb +89 -52
- data/fastlane_core/lib/fastlane_core/pkg_file_analyser.rb +7 -0
- data/fastlane_core/lib/fastlane_core/project.rb +0 -1
- data/frameit/lib/frameit/device_types.rb +100 -100
- data/produce/lib/produce/itunes_connect.rb +32 -21
- data/produce/lib/produce/options.rb +3 -3
- data/sigh/lib/assets/resign.sh +7 -7
- data/snapshot/lib/assets/SnapshotHelper.swift +5 -5
- data/snapshot/lib/assets/SnapshotHelperXcode8.swift +3 -3
- data/snapshot/lib/snapshot/options.rb +0 -1
- data/snapshot/lib/snapshot/reports_generator.rb +8 -1
- data/spaceship/lib/spaceship/.DS_Store +0 -0
- data/spaceship/lib/spaceship/client.rb +4 -3
- data/spaceship/lib/spaceship/connect_api.rb +25 -2
- data/spaceship/lib/spaceship/connect_api/client.rb +97 -31
- data/spaceship/lib/spaceship/connect_api/file_uploader.rb +98 -0
- data/spaceship/lib/spaceship/connect_api/model.rb +1 -1
- data/spaceship/lib/spaceship/connect_api/models/age_rating_declaration.rb +113 -0
- data/spaceship/lib/spaceship/connect_api/models/app.rb +120 -3
- data/spaceship/lib/spaceship/connect_api/models/app_category.rb +94 -0
- data/spaceship/lib/spaceship/connect_api/models/app_info.rb +67 -0
- data/spaceship/lib/spaceship/connect_api/models/app_info_localization.rb +38 -0
- data/spaceship/lib/spaceship/connect_api/models/app_preview.rb +129 -0
- data/spaceship/lib/spaceship/connect_api/models/app_preview_set.rb +71 -0
- data/spaceship/lib/spaceship/connect_api/models/app_price.rb +22 -0
- data/spaceship/lib/spaceship/connect_api/models/app_price_tier.rb +12 -0
- data/spaceship/lib/spaceship/connect_api/models/app_review_attachment.rb +71 -0
- data/spaceship/lib/spaceship/connect_api/models/app_screenshot.rb +93 -0
- data/spaceship/lib/spaceship/connect_api/models/app_screenshot_set.rb +101 -0
- data/spaceship/lib/spaceship/connect_api/models/app_store_review_detail.rb +51 -0
- data/spaceship/lib/spaceship/connect_api/models/app_store_version.rb +183 -0
- data/spaceship/lib/spaceship/connect_api/models/app_store_version_localization.rb +86 -0
- data/spaceship/lib/spaceship/connect_api/models/app_store_version_phased_release.rb +36 -0
- data/spaceship/lib/spaceship/connect_api/models/app_store_version_submission.rb +26 -0
- data/spaceship/lib/spaceship/connect_api/models/build.rb +4 -0
- data/spaceship/lib/spaceship/connect_api/models/idfa_declaration.rb +40 -0
- data/spaceship/lib/spaceship/connect_api/models/reset_ratings_request.rb +26 -0
- data/spaceship/lib/spaceship/connect_api/models/territory.rb +27 -0
- data/spaceship/lib/spaceship/connect_api/testflight/testflight.rb +10 -3
- data/spaceship/lib/spaceship/connect_api/tunes/client.rb +33 -0
- data/spaceship/lib/spaceship/connect_api/tunes/tunes.rb +841 -0
- data/spaceship/lib/spaceship/spaceauth_runner.rb +2 -2
- data/supply/lib/supply/client.rb +19 -0
- data/supply/lib/supply/reader.rb +16 -0
- metadata +44 -39
- data/deliver/lib/deliver/upload_assets.rb +0 -27
- data/fastlane/lib/assets/.s3_html_template.erb.swp +0 -0
- data/fastlane/lib/fastlane/actions/.hipchat.rb.swp +0 -0
- data/fastlane/lib/fastlane/actions/.slack.rb.swp +0 -0
- data/scan/lib/scan/.options.rb.swp +0 -0
|
@@ -1,23 +1,37 @@
|
|
|
1
1
|
require_relative 'module'
|
|
2
|
+
require 'spaceship'
|
|
2
3
|
|
|
3
4
|
module Deliver
|
|
4
5
|
# Set the app's pricing
|
|
5
6
|
class UploadPriceTier
|
|
6
7
|
def upload(options)
|
|
7
8
|
return unless options[:price_tier]
|
|
8
|
-
app = options[:app]
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
options[:price_tier] = options[:price_tier].to_s
|
|
10
|
+
price_tier = options[:price_tier].to_s
|
|
12
11
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
12
|
+
legacy_app = options[:app]
|
|
13
|
+
app_id = legacy_app.apple_id
|
|
14
|
+
app = Spaceship::ConnectAPI::App.get(app_id: app_id)
|
|
15
|
+
|
|
16
|
+
attributes = {}
|
|
17
|
+
territory_ids = []
|
|
18
|
+
|
|
19
|
+
app_prices = app.fetch_app_prices
|
|
20
|
+
if app_prices.first
|
|
21
|
+
old_price = app_prices.first.price_tier.id
|
|
22
|
+
else
|
|
23
|
+
UI.message("App has no prices yet... Enabling all countries in App Store Connect")
|
|
24
|
+
territory_ids = Spaceship::ConnectAPI::Territory.all.map(&:id)
|
|
25
|
+
attributes[:availableInNewTerritories] = true
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
if price_tier == old_price
|
|
29
|
+
UI.success("Price Tier unchanged (tier #{old_price})")
|
|
16
30
|
return
|
|
17
31
|
end
|
|
18
32
|
|
|
19
|
-
app.
|
|
20
|
-
UI.success("Successfully updated the pricing from #{old_price} to #{
|
|
33
|
+
app.update(attributes: attributes, app_price_tier_id: price_tier, territory_ids: territory_ids)
|
|
34
|
+
UI.success("Successfully updated the pricing from #{old_price} to #{price_tier}")
|
|
21
35
|
end
|
|
22
36
|
end
|
|
23
37
|
end
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
require 'spaceship/tunes/tunes'
|
|
2
|
+
require 'digest/md5'
|
|
2
3
|
|
|
3
4
|
require_relative 'app_screenshot'
|
|
4
5
|
require_relative 'module'
|
|
@@ -11,69 +12,163 @@ module Deliver
|
|
|
11
12
|
return if options[:skip_screenshots]
|
|
12
13
|
return if options[:edit_live]
|
|
13
14
|
|
|
14
|
-
|
|
15
|
+
legacy_app = options[:app]
|
|
16
|
+
app_id = legacy_app.apple_id
|
|
17
|
+
app = Spaceship::ConnectAPI::App.get(app_id: app_id)
|
|
15
18
|
|
|
16
|
-
|
|
17
|
-
|
|
19
|
+
platform = Spaceship::ConnectAPI::Platform.map(options[:platform])
|
|
20
|
+
version = app.get_edit_app_store_version(platform: platform)
|
|
21
|
+
UI.user_error!("Could not find a version to edit for app '#{app.name}' for '#{platform}'") unless version
|
|
22
|
+
|
|
23
|
+
UI.important("Will begin uploading snapshots for '#{version.version_string}' on App Store Connect")
|
|
18
24
|
|
|
19
25
|
UI.message("Starting with the upload of screenshots...")
|
|
20
26
|
screenshots_per_language = screenshots.group_by(&:language)
|
|
21
27
|
|
|
28
|
+
localizations = version.get_app_store_version_localizations
|
|
29
|
+
|
|
22
30
|
if options[:overwrite_screenshots]
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
31
|
+
# Get localizations on version
|
|
32
|
+
localizations.each do |localization|
|
|
33
|
+
# Only delete screenshots if trying to upload
|
|
34
|
+
next unless screenshots_per_language.keys.include?(localization.locale)
|
|
35
|
+
|
|
36
|
+
# Iterate over all screenshots for each set and delete
|
|
37
|
+
screenshot_sets = localization.get_app_screenshot_sets
|
|
38
|
+
|
|
39
|
+
# Multi threading delete on single localization
|
|
40
|
+
threads = []
|
|
41
|
+
errors = []
|
|
42
|
+
|
|
43
|
+
screenshot_sets.each do |screenshot_set|
|
|
44
|
+
UI.message("Removing all previously uploaded screenshots for '#{localization.locale}' '#{screenshot_set.screenshot_display_type}'...")
|
|
45
|
+
screenshot_set.app_screenshots.each do |screenshot|
|
|
46
|
+
UI.verbose("Deleting screenshot - #{localization.locale} #{screenshot_set.screenshot_display_type} #{screenshot.id}")
|
|
47
|
+
threads << Thread.new do
|
|
48
|
+
begin
|
|
49
|
+
screenshot.delete!
|
|
50
|
+
UI.verbose("Deleted screenshot - #{localization.locale} #{screenshot_set.screenshot_display_type} #{screenshot.id}")
|
|
51
|
+
rescue => error
|
|
52
|
+
UI.verbose("Failed to delete screenshot - #{localization.locale} #{screenshot_set.screenshot_display_type} #{screenshot.id}")
|
|
53
|
+
errors << error
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
sleep(1) # Feels bad but sleeping a bit to let the threads catchup
|
|
60
|
+
|
|
61
|
+
unless threads.empty?
|
|
62
|
+
Helper.show_loading_indicator("Waiting for screenshots to be deleted for '#{localization.locale}'... (might be slow)") unless FastlaneCore::Globals.verbose?
|
|
63
|
+
threads.each(&:join)
|
|
64
|
+
Helper.hide_loading_indicator unless FastlaneCore::Globals.verbose?
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
# Crash if any errors happen while deleting
|
|
68
|
+
unless errors.empty?
|
|
69
|
+
UI.crash!(errors.map(&:message).join("\n"))
|
|
30
70
|
end
|
|
31
71
|
end
|
|
32
72
|
end
|
|
33
73
|
|
|
34
|
-
#
|
|
35
|
-
|
|
74
|
+
# Finding languages to enable
|
|
75
|
+
languages = screenshots_per_language.keys
|
|
76
|
+
locales_to_enable = languages - localizations.map(&:locale)
|
|
36
77
|
|
|
37
|
-
|
|
38
|
-
if enabled_languages.count > 0
|
|
39
|
-
v.create_languages(enabled_languages)
|
|
78
|
+
if locales_to_enable.count > 0
|
|
40
79
|
lng_text = "language"
|
|
41
|
-
lng_text += "s" if
|
|
42
|
-
Helper.show_loading_indicator("Activating #{lng_text} #{
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
80
|
+
lng_text += "s" if locales_to_enable.count != 1
|
|
81
|
+
Helper.show_loading_indicator("Activating #{lng_text} #{locales_to_enable.join(', ')}...")
|
|
82
|
+
|
|
83
|
+
locales_to_enable.each do |locale|
|
|
84
|
+
version.create_app_store_version_localization(attributes: {
|
|
85
|
+
locale: locale
|
|
86
|
+
})
|
|
87
|
+
end
|
|
88
|
+
|
|
46
89
|
Helper.hide_loading_indicator
|
|
90
|
+
|
|
91
|
+
# Refresh version localizations
|
|
92
|
+
localizations = version.get_app_store_version_localizations
|
|
47
93
|
end
|
|
48
94
|
|
|
95
|
+
upload_screenshots(screenshots_per_language, localizations)
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
def upload_screenshots(screenshots_per_language, localizations)
|
|
99
|
+
# Upload screenshots
|
|
100
|
+
indized = {} # per language and device type
|
|
101
|
+
|
|
49
102
|
screenshots_per_language.each do |language, screenshots_for_language|
|
|
103
|
+
# Find localization to upload screenshots to
|
|
104
|
+
localization = localizations.find do |l|
|
|
105
|
+
l.locale == language
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
unless localization
|
|
109
|
+
UI.error("Couldn't find localization on version for #{language}")
|
|
110
|
+
next
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
indized[localization.locale] ||= {}
|
|
114
|
+
|
|
115
|
+
# Create map to find screenshot set to add screenshot to
|
|
116
|
+
app_screenshot_sets_map = {}
|
|
117
|
+
app_screenshot_sets = localization.get_app_screenshot_sets
|
|
118
|
+
app_screenshot_sets.each do |app_screenshot_set|
|
|
119
|
+
app_screenshot_sets_map[app_screenshot_set.screenshot_display_type] = app_screenshot_set
|
|
120
|
+
|
|
121
|
+
# Set initial screnshot count
|
|
122
|
+
indized[localization.locale][app_screenshot_set.screenshot_display_type] ||= {
|
|
123
|
+
count: app_screenshot_set.app_screenshots.size,
|
|
124
|
+
checksums: []
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
checksums = app_screenshot_set.app_screenshots.map(&:source_file_checksum).uniq
|
|
128
|
+
indized[localization.locale][app_screenshot_set.screenshot_display_type][:checksums] = checksums
|
|
129
|
+
end
|
|
130
|
+
|
|
50
131
|
UI.message("Uploading #{screenshots_for_language.length} screenshots for language #{language}")
|
|
51
132
|
screenshots_for_language.each do |screenshot|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
indized[screenshot.language][screenshot.formatted_name] += 1 # we actually start with 1... wtf iTC
|
|
133
|
+
display_type = screenshot.device_type
|
|
134
|
+
set = app_screenshot_sets_map[display_type]
|
|
55
135
|
|
|
56
|
-
|
|
136
|
+
if display_type.nil?
|
|
137
|
+
UI.error("Error... Screenshot size #{screenshot.screen_size} not valid for App Store Connect")
|
|
138
|
+
next
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
unless set
|
|
142
|
+
set = localization.create_app_screenshot_set(attributes: {
|
|
143
|
+
screenshotDisplayType: display_type
|
|
144
|
+
})
|
|
145
|
+
app_screenshot_sets_map[display_type] = set
|
|
146
|
+
|
|
147
|
+
indized[localization.locale][set.screenshot_display_type] = {
|
|
148
|
+
count: 0,
|
|
149
|
+
checksums: []
|
|
150
|
+
}
|
|
151
|
+
end
|
|
57
152
|
|
|
58
|
-
|
|
59
|
-
|
|
153
|
+
index = indized[localization.locale][set.screenshot_display_type][:count]
|
|
154
|
+
|
|
155
|
+
if index >= 10
|
|
156
|
+
UI.error("Too many screenshots found for device '#{screenshot.device_type}' in '#{screenshot.language}', skipping this one (#{screenshot.path})")
|
|
60
157
|
next
|
|
61
158
|
end
|
|
62
159
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
160
|
+
bytes = File.binread(screenshot.path)
|
|
161
|
+
checksum = Digest::MD5.hexdigest(bytes)
|
|
162
|
+
duplicate = indized[localization.locale][set.screenshot_display_type][:checksums].include?(checksum)
|
|
163
|
+
|
|
164
|
+
if duplicate
|
|
165
|
+
UI.message("Previous uploaded. Skipping '#{screenshot.path}'...")
|
|
166
|
+
else
|
|
167
|
+
indized[localization.locale][set.screenshot_display_type][:count] += 1
|
|
168
|
+
UI.message("Uploading '#{screenshot.path}'...")
|
|
169
|
+
set.upload_screenshot(path: screenshot.path)
|
|
170
|
+
end
|
|
69
171
|
end
|
|
70
|
-
# ideally we should only save once, but itunes server can't cope it seems
|
|
71
|
-
# so we save per language. See issue #349
|
|
72
|
-
Helper.show_loading_indicator("Saving changes")
|
|
73
|
-
v.save!
|
|
74
|
-
# Refresh app version to start clean again. See issue #9859
|
|
75
|
-
v = app.edit_version
|
|
76
|
-
Helper.hide_loading_indicator
|
|
77
172
|
end
|
|
78
173
|
UI.success("Successfully uploaded screenshots to App Store Connect")
|
|
79
174
|
end
|
|
@@ -364,7 +364,7 @@ snapshot(launch_arguments: ["SKIP_ANIMATIONS"])
|
|
|
364
364
|
```
|
|
365
365
|
|
|
366
366
|
By default, _snapshot_ will wait for a short time for the animations to finish.
|
|
367
|
-
If you're skipping the animations, this
|
|
367
|
+
If you're skipping the animations, this wait time is unnecessary and can be skipped:
|
|
368
368
|
|
|
369
369
|
```swift
|
|
370
370
|
setupSnapshot(app, waitForAnimations: false)
|
|
@@ -467,7 +467,7 @@ _deliver_ allows for metadata to be set through `.txt` files in the metadata fol
|
|
|
467
467
|
|
|
468
468
|
Key | Editable While Live | Directory | Filename
|
|
469
469
|
----|--------|--------|--------
|
|
470
|
-
<%- (Deliver::UploadMetadata::NON_LOCALISED_VERSION_VALUES + Deliver::UploadMetadata::NON_LOCALISED_APP_VALUES).each do |value| -%>
|
|
470
|
+
<%- (Deliver::UploadMetadata::NON_LOCALISED_VERSION_VALUES.keys + Deliver::UploadMetadata::NON_LOCALISED_APP_VALUES).each do |value| -%>
|
|
471
471
|
`<%= value %>` | <%= Deliver::UploadMetadata::NON_LOCALISED_LIVE_VALUES.include?(value) ? 'Yes' : 'No' %> | `<metadata_path>` | `<%= value %>.txt`
|
|
472
472
|
<%- end %>
|
|
473
473
|
|
|
@@ -475,23 +475,15 @@ Key | Editable While Live | Directory | Filename
|
|
|
475
475
|
|
|
476
476
|
Key | Editable While Live | Directory | Filename
|
|
477
477
|
----|--------|--------|--------
|
|
478
|
-
<%- (Deliver::UploadMetadata::LOCALISED_APP_VALUES + Deliver::UploadMetadata::LOCALISED_VERSION_VALUES).each do |value| -%>
|
|
478
|
+
<%- (Deliver::UploadMetadata::LOCALISED_APP_VALUES.keys + Deliver::UploadMetadata::LOCALISED_VERSION_VALUES.keys).each do |value| -%>
|
|
479
479
|
`<%= value %>` | <%= Deliver::UploadMetadata::LOCALISED_LIVE_VALUES.include?(value) ? 'Yes' : 'No' %> | `<metadata_path>/<lang>/` | `<%= value %>.txt`
|
|
480
480
|
<%- end %>
|
|
481
481
|
|
|
482
|
-
### Trade Representative Contact Information Metadata
|
|
483
|
-
|
|
484
|
-
Key | Editable While Live | Directory | Filename
|
|
485
|
-
----|--------|--------|--------
|
|
486
|
-
<%- Deliver::UploadMetadata::TRADE_REPRESENTATIVE_CONTACT_INFORMATION_VALUES.each do |key, value| -%>
|
|
487
|
-
`<%= value %>` | Yes | `<metadata_path>/<%= Deliver::UploadMetadata::TRADE_REPRESENTATIVE_CONTACT_INFORMATION_DIR %>` | `<%= value %>.txt`
|
|
488
|
-
<%- end %>
|
|
489
|
-
|
|
490
482
|
### Review Information Metadata
|
|
491
483
|
|
|
492
484
|
Key | Editable While Live | Directory | Filename
|
|
493
485
|
----|--------|--------|--------
|
|
494
|
-
<%- Deliver::UploadMetadata::
|
|
486
|
+
<%- Deliver::UploadMetadata::REVIEW_INFORMATION_VALUES_LEGACY.each do |key, value| -%>
|
|
495
487
|
`<%= value %>` | Yes | `<metadata_path>/<%= Deliver::UploadMetadata::REVIEW_INFORMATION_DIR %>` | `<%= value %>.txt`
|
|
496
488
|
<%- end %>
|
|
497
489
|
|
|
@@ -502,33 +494,32 @@ Key | Editable While Live | Directory | Filename
|
|
|
502
494
|
|
|
503
495
|
### Available Categories
|
|
504
496
|
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
- `
|
|
508
|
-
- `
|
|
509
|
-
- `
|
|
510
|
-
- `
|
|
511
|
-
- `
|
|
512
|
-
- `
|
|
513
|
-
- `
|
|
514
|
-
- `
|
|
515
|
-
- `
|
|
516
|
-
- `
|
|
517
|
-
- `
|
|
518
|
-
- `
|
|
519
|
-
- `
|
|
520
|
-
- `
|
|
521
|
-
- `
|
|
522
|
-
- `
|
|
523
|
-
- `
|
|
524
|
-
- `
|
|
525
|
-
- `
|
|
526
|
-
- `
|
|
527
|
-
- `
|
|
528
|
-
- `
|
|
529
|
-
- `
|
|
530
|
-
- `
|
|
531
|
-
- `Weather`
|
|
497
|
+
- `FOOD_AND_DRINK`
|
|
498
|
+
- `BUSINESS`
|
|
499
|
+
- `EDUCATION`
|
|
500
|
+
- `SOCIAL_NETWORKING`
|
|
501
|
+
- `BOOKS`
|
|
502
|
+
- `SPORTS`
|
|
503
|
+
- `FINANCE`
|
|
504
|
+
- `REFERENCE`
|
|
505
|
+
- `GRAPHICS_AND_DESIGN`
|
|
506
|
+
- `DEVELOPER_TOOLS`
|
|
507
|
+
- `HEALTH_AND_FITNESS`
|
|
508
|
+
- `MUSIC`
|
|
509
|
+
- `WEATHER`
|
|
510
|
+
- `TRAVEL`
|
|
511
|
+
- `ENTERTAINMENT`
|
|
512
|
+
- `STICKERS`
|
|
513
|
+
- `GAMES`
|
|
514
|
+
- `LIFESTYLE`
|
|
515
|
+
- `MEDICAL`
|
|
516
|
+
- `MAGAZINES_AND_NEWSPAPERS`
|
|
517
|
+
- `UTILITIES`
|
|
518
|
+
- `SHOPPING`
|
|
519
|
+
- `PRODUCTIVITY`
|
|
520
|
+
- `NEWS`
|
|
521
|
+
- `PHOTO_AND_VIDEO`
|
|
522
|
+
- `NAVIGATION`
|
|
532
523
|
|
|
533
524
|
### Available Game Subcategories
|
|
534
525
|
|
|
@@ -551,54 +542,40 @@ You can always prefix the category using `MZGenre.` (e.g. `MZGenre.Book`). _deli
|
|
|
551
542
|
- `MZGenre.Trivia`
|
|
552
543
|
- `MZGenre.Word`
|
|
553
544
|
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
- `
|
|
557
|
-
- `
|
|
558
|
-
- `
|
|
559
|
-
- `
|
|
560
|
-
- `
|
|
561
|
-
- `
|
|
562
|
-
- `
|
|
563
|
-
- `
|
|
564
|
-
- `
|
|
565
|
-
- `
|
|
566
|
-
- `
|
|
567
|
-
- `
|
|
568
|
-
- `
|
|
569
|
-
- `
|
|
570
|
-
- `MZGenre.Apps.Literary_Magazines_Journals`
|
|
571
|
-
- `MZGenre.Apps.Mens_Interest`
|
|
572
|
-
- `MZGenre.Apps.Movies_Music`
|
|
573
|
-
- `MZGenre.Apps.News_Politics`
|
|
574
|
-
- `MZGenre.Apps.Outdoors_Nature`
|
|
575
|
-
- `MZGenre.Apps.Parenting_Family`
|
|
576
|
-
- `MZGenre.Apps.Pets`
|
|
577
|
-
- `MZGenre.Apps.Professional_Trade`
|
|
578
|
-
- `MZGenre.Apps.Regional_News`
|
|
579
|
-
- `MZGenre.Apps.Science`
|
|
580
|
-
- `MZGenre.Apps.Sports_Leisure`
|
|
581
|
-
- `MZGenre.Apps.Teens`
|
|
582
|
-
- `MZGenre.Apps.Travel_Regional`
|
|
583
|
-
- `MZGenre.Apps.Womens_Interest`
|
|
545
|
+
- `GAMES_SPORTS`
|
|
546
|
+
- `GAMES_WORD`
|
|
547
|
+
- `GAMES_MUSIC`
|
|
548
|
+
- `GAMES_ADVENTURE`
|
|
549
|
+
- `GAMES_ACTION`
|
|
550
|
+
- `GAMES_ROLE_PLAYING`
|
|
551
|
+
- `GAMES_CASUAL`
|
|
552
|
+
- `GAMES_BOARD`
|
|
553
|
+
- `GAMES_TRIVIA`
|
|
554
|
+
- `GAMES_CARD`
|
|
555
|
+
- `GAMES_PUZZLE`
|
|
556
|
+
- `GAMES_CASINO`
|
|
557
|
+
- `GAMES_STRATEGY`
|
|
558
|
+
- `GAMES_SIMULATION`
|
|
559
|
+
- `GAMES_RACING`
|
|
560
|
+
- `GAMES_FAMILY`
|
|
584
561
|
|
|
585
562
|
### Available Stickers Subcategories
|
|
586
563
|
|
|
587
|
-
- `
|
|
588
|
-
- `
|
|
589
|
-
- `
|
|
590
|
-
- `
|
|
591
|
-
- `
|
|
592
|
-
- `
|
|
593
|
-
- `
|
|
594
|
-
- `
|
|
595
|
-
- `
|
|
596
|
-
- `
|
|
597
|
-
- `
|
|
598
|
-
- `
|
|
599
|
-
- `
|
|
600
|
-
- `
|
|
601
|
-
- `
|
|
564
|
+
- `STICKERS_PLACES_AND_OBJECTS`
|
|
565
|
+
- `STICKERS_EMOJI_AND_EXPRESSIONS`
|
|
566
|
+
- `STICKERS_CELEBRATIONS`
|
|
567
|
+
- `STICKERS_CELEBRITIES`
|
|
568
|
+
- `STICKERS_MOVIES_AND_TV`
|
|
569
|
+
- `STICKERS_SPORTS_AND_ACTIVITIES`
|
|
570
|
+
- `STICKERS_EATING_AND_DRINKING`
|
|
571
|
+
- `STICKERS_CHARACTERS`
|
|
572
|
+
- `STICKERS_ANIMALS`
|
|
573
|
+
- `STICKERS_FASHION`
|
|
574
|
+
- `STICKERS_ART`
|
|
575
|
+
- `STICKERS_GAMING`
|
|
576
|
+
- `STICKERS_KIDS_AND_FAMILY`
|
|
577
|
+
- `STICKERS_PEOPLE`
|
|
578
|
+
- `STICKERS_MUSIC`
|
|
602
579
|
|
|
603
580
|
### Available age rating groups
|
|
604
581
|
|
|
@@ -610,26 +587,30 @@ You can always prefix the category using `MZGenre.` (e.g. `MZGenre.Book`). _deli
|
|
|
610
587
|
- 1: Infrequent/Mild
|
|
611
588
|
- 2: Frequent/Intense
|
|
612
589
|
|
|
590
|
+
- `NONE`
|
|
591
|
+
- `INFREQUENT_OR_MILD`
|
|
592
|
+
- `FREQUENT_OR_INTENSE`
|
|
593
|
+
|
|
613
594
|
**Keys**
|
|
614
595
|
|
|
615
|
-
- `
|
|
616
|
-
- `
|
|
617
|
-
- `
|
|
618
|
-
- `
|
|
619
|
-
- `
|
|
620
|
-
- `
|
|
621
|
-
- `
|
|
622
|
-
- `
|
|
623
|
-
- `
|
|
624
|
-
- `
|
|
625
|
-
- `
|
|
596
|
+
- `violenceCartoonOrFantasy`
|
|
597
|
+
- `violenceRealistic`
|
|
598
|
+
- `violenceRealisticProlongedGraphicOrSadistic`
|
|
599
|
+
- `profanityOrCrudeHumor`
|
|
600
|
+
- `matureOrSuggestiveThemes`
|
|
601
|
+
- `horrorOrFearThemes`
|
|
602
|
+
- `medicalOrTreatmentInformation`
|
|
603
|
+
- `alcoholTobaccoOrDrugUseOrReferences`
|
|
604
|
+
- `gamblingSimulated`
|
|
605
|
+
- `sexualContentOrNudity`
|
|
606
|
+
- `sexualContentGraphicAndNudity`
|
|
626
607
|
|
|
627
608
|
#### Boolean
|
|
628
609
|
|
|
629
610
|
**Keys**
|
|
630
611
|
|
|
631
|
-
- `
|
|
632
|
-
- `
|
|
612
|
+
- `unrestrictedWebAccess`
|
|
613
|
+
- `gamblingAndContests`
|
|
633
614
|
</details>
|
|
634
615
|
|
|
635
616
|
<br />
|