fastlane 2.149.0 → 2.150.0.rc4
Sign up to get free protection for your applications and to get access to all the features.
- 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 />
|