432 lines
14 KiB
YAML
432 lines
14 KiB
YAML
|
|
app_name: GuruApp
|
|||
|
|
|
|||
|
|
flavor: "guru_test"
|
|||
|
|
|
|||
|
|
# App接入GuruApp的基础信息(下面内容必填)
|
|||
|
|
details:
|
|||
|
|
# 中台接口上报时的app_id,影响中台push接入和后期的中台打点接入(必填)
|
|||
|
|
saas_app_id: guruapp
|
|||
|
|
|
|||
|
|
# 针对DynamicLink和Deeplink的判断(必填)
|
|||
|
|
authority: demo.gurugame.fun
|
|||
|
|
|
|||
|
|
# 对应Firebase项目中的基础链接(必填)
|
|||
|
|
storage_prefix: https://firebasestorage.googleapis.com/v0/b/example.appspot.com/o
|
|||
|
|
|
|||
|
|
# 对应CDN云控中的默认cdn链接(必填)
|
|||
|
|
default_cdn_prefix: https://cdn1.example.gurugame.fun
|
|||
|
|
|
|||
|
|
# Android的商店链接,后期分享,用户反馈或PubMatic等广告源的使用(必填)
|
|||
|
|
android_gp_url: https://play.google.com/store/apps/details?id=app_package_id
|
|||
|
|
|
|||
|
|
# IOS的商店链接,后期分享,用户反馈或PubMatic等广告源的使用(必填)
|
|||
|
|
ios_spp_store_url:
|
|||
|
|
|
|||
|
|
# 隐私协议的链接(必填)
|
|||
|
|
policy_url: https://solitaire.fungame.studio/policy.html
|
|||
|
|
|
|||
|
|
# 隐私条款的链接(必填)
|
|||
|
|
terms_url: https://solitaire.fungame.studio/termsofservice.html
|
|||
|
|
|
|||
|
|
# 联系邮箱 (必填)
|
|||
|
|
email_url: demo@gurugame.fun
|
|||
|
|
|
|||
|
|
# Android Package Name (必填)
|
|||
|
|
package_name: guru.app.demo
|
|||
|
|
|
|||
|
|
# iOS Bundle Id (必填)
|
|||
|
|
bundle_id: guru.app.demo
|
|||
|
|
|
|||
|
|
# Facebook App Id
|
|||
|
|
facebook_app_id: 123456789
|
|||
|
|
|
|||
|
|
deployment:
|
|||
|
|
# AppProperty Cache的大小,默认是256
|
|||
|
|
property_cache_size: 512
|
|||
|
|
|
|||
|
|
# Paint.enableDithering,默认是true
|
|||
|
|
enable_dithering: false
|
|||
|
|
|
|||
|
|
# 禁用激励视频,默认是false
|
|||
|
|
disable_rewards_ads: true
|
|||
|
|
|
|||
|
|
# 是否启用 Analytics Statistic 统计
|
|||
|
|
enable_analytics_statistic: true
|
|||
|
|
|
|||
|
|
# 是否自动恢复IAP购买数据
|
|||
|
|
auto_restore_iap: false
|
|||
|
|
|
|||
|
|
# 初始的游戏币数量,默认是 0
|
|||
|
|
init_igc: 500
|
|||
|
|
|
|||
|
|
# igc(游戏内货币) 验证密钥混,int类型,防止igc被外部修改
|
|||
|
|
igc_balance_secret: 2654404609
|
|||
|
|
|
|||
|
|
# GuruApp Persistent Log 默认10M
|
|||
|
|
log_file_size_limit: 10485760
|
|||
|
|
|
|||
|
|
# GuruApp Persistent Log 保存的个数,默认7个
|
|||
|
|
log_file_count: 7
|
|||
|
|
|
|||
|
|
# 使用persistent log的最小等级,最终 >= 该level的日志将会被存储到本地
|
|||
|
|
# verbose: 0
|
|||
|
|
# debug: 1
|
|||
|
|
# info: 2
|
|||
|
|
# warning: 3
|
|||
|
|
# error: 4
|
|||
|
|
# wtf: 5
|
|||
|
|
# nothing: 6
|
|||
|
|
persistent_log_level: 1
|
|||
|
|
|
|||
|
|
# ios 验证服务器的密码
|
|||
|
|
ios_validate_receipt_password: aa998877665544332211bb00cc
|
|||
|
|
|
|||
|
|
|
|||
|
|
# 被标注的conversion点,在自打点库中将被以Emergency的优先级进行发送
|
|||
|
|
conversion_events:
|
|||
|
|
- first_rads_rewarded
|
|||
|
|
- level_end_success_1
|
|||
|
|
- level_end_success_6
|
|||
|
|
- level_end_success_10
|
|||
|
|
- level_end_success_12
|
|||
|
|
- level_end_success_15
|
|||
|
|
- level_up
|
|||
|
|
- level_up_1
|
|||
|
|
- level_up_3
|
|||
|
|
- level_up_5
|
|||
|
|
- level_up_7
|
|||
|
|
- level_up_10
|
|||
|
|
- level_up_12
|
|||
|
|
- level_up_15
|
|||
|
|
- tch_ad_rev_roas_001
|
|||
|
|
- tutorial_complete
|
|||
|
|
|
|||
|
|
api_connect_timeout: 15000
|
|||
|
|
|
|||
|
|
api_receive_timeout: 15000
|
|||
|
|
|
|||
|
|
#
|
|||
|
|
# Sandbox lets you test subscription events, such as renewals, state changes, and interrupted purchases,
|
|||
|
|
# without having to wait the length of the subscription duration. Once you added testers in sandbox,
|
|||
|
|
# you can choose a subscription renewal speed for each tester to determine how quickly subscriptions renew.
|
|||
|
|
# By default, accounts are set to a speed equalization of 1 month = 5 minutes,
|
|||
|
|
# but you can slow down or speed up the renewal period, based on the options below.
|
|||
|
|
# Subscriptions renew up to 12 times before auto-renewal turns off on the thirteenth renewal attempt.
|
|||
|
|
# ┌───────────────┬────────────────┬────────────────┬────────────────┬────────────────┬────────────────┐
|
|||
|
|
# │ Subscription │ Renewal every │ Renewal every │ Renewal every │ Renewal every │ Renewal every │
|
|||
|
|
# │ Duration │ 3 Minutes │ 5 Minutes │ 15 Minutes │ 30 Minutes │ Hour │
|
|||
|
|
# ├───────────────┼────────────────┼────────────────┼────────────────┼────────────────┼────────────────┤
|
|||
|
|
# │ 1 Week │ 3 minutes │ 3 minutes │ 5 minutes │ 10 minutes │ 15 minutes │
|
|||
|
|
# ├───────────────┼────────────────┼────────────────┼────────────────┼────────────────┼────────────────┤
|
|||
|
|
# │ 1 Month │ 3 minutes │ 5 minutes │ 15 minutes │ 30 minutes │ 1 hour │
|
|||
|
|
# ├───────────────┼────────────────┼────────────────┼────────────────┼────────────────┼────────────────┤
|
|||
|
|
# │ 6 Months │ 18 minutes │ 30 minutes │ 90 minutes │ 3 hours │ 6 hours │
|
|||
|
|
# ├───────────────┼────────────────┼────────────────┼────────────────┼────────────────┼────────────────┤
|
|||
|
|
# │ 1 Year │ 36 minutes │ 1 hour │ 3 hours │ 6 hours │ 12 hours │
|
|||
|
|
# └───────────────┴────────────────┴────────────────┴────────────────┴────────────────┴────────────────┘
|
|||
|
|
#
|
|||
|
|
# level 1: Renewal every 3 minutes per month
|
|||
|
|
# level 2: Renewal every 5 minutes per month (default)
|
|||
|
|
# level 3: Renewal every 15 minutes per month
|
|||
|
|
# level 4: Renewal every 30 minutes per month
|
|||
|
|
# level 5: Renewal every 1 hour per month
|
|||
|
|
ios_sandbox_subs_renewal_speed: 2
|
|||
|
|
|
|||
|
|
# 是否使用广告合规初始化的逻辑,合规初始化是指先收集GDPR在初始化广告
|
|||
|
|
ads_compliant_initialization: false
|
|||
|
|
|
|||
|
|
# 自动请求通知栏权限,默认是false
|
|||
|
|
auto_request_notification_permission: false
|
|||
|
|
|
|||
|
|
# 请求通知栏权限时的提示出发机制
|
|||
|
|
# rationale: 依赖Android原生的shouldShowRequestRationale返回值来展示对应的Rationale页面
|
|||
|
|
# request: 依赖请求的次数来展示对应的Rationale页面
|
|||
|
|
notification_permission_prompt_trigger: rationale
|
|||
|
|
|
|||
|
|
# 是否追踪通知栏权限的通过率,默认是false。
|
|||
|
|
# 如果为true时将会上报对应noti_perm_req_`n`和noti_perm_pass_`n`
|
|||
|
|
# n: 表示第几次请求
|
|||
|
|
# 注意!如果开启了追踪通知栏权限的通过率统计点位,那么firebase打点中将会出现`n`个noti_perm_req_`n`和noti_perm_pass_`n`这两个打点
|
|||
|
|
# 这里的n的限制需要配置tracking_notification_permission_pass_limit_times
|
|||
|
|
tracking_notification_permission_pass: false
|
|||
|
|
|
|||
|
|
# 如果追踪通知栏权限的通过率,这个值表示最大的追踪次数,超过最大次数后将不再追踪
|
|||
|
|
tracking_notification_permission_pass_limit_times: 10
|
|||
|
|
|
|||
|
|
# 是否打开GuruAnalytics的策略,默认是false
|
|||
|
|
enabled_guru_analytics_strategy: false
|
|||
|
|
|
|||
|
|
# 在RewardedAware中调用 showRewardedAd 方法时
|
|||
|
|
# 在激励视频不可用时,是否允许使用插屏做为替代奖励,默认是 false
|
|||
|
|
# 注意:即使这里设置成 True,在你使用的页面 Controller中,要确保 with InterstitialAware
|
|||
|
|
allow_interstitial_as_alternative_reward: false
|
|||
|
|
|
|||
|
|
# 在 Banner 广告未成功加载的期间,填充一个内部的广告,可以是一个推广,一个内部的广告。
|
|||
|
|
# 它不会影响正常的广告展示逻辑,只要 Banner 广告正常加载,都会将其进行隐藏。
|
|||
|
|
# 因此它的优先级永远不会大于正常的 Banner 广告, 默认值是 false
|
|||
|
|
show_internal_ads_when_banner_unavailable: true
|
|||
|
|
|
|||
|
|
# 广告配置
|
|||
|
|
ads_profile:
|
|||
|
|
# Banner广告ID(变现提供)
|
|||
|
|
banner_ad_unit_id:
|
|||
|
|
android: xxxxxxxxxxxxxxxx
|
|||
|
|
ios: xxxxxxxxxxxxxxxx
|
|||
|
|
|
|||
|
|
# Interstitial广告ID(变现提供)
|
|||
|
|
interstitial_ad_unit_id:
|
|||
|
|
android: xxxxxxxxxxxxxxxx
|
|||
|
|
ios: xxxxxxxxxxxxxxxx
|
|||
|
|
|
|||
|
|
# Rewards广告ID(变现提供)
|
|||
|
|
rewards_ad_unit_id:
|
|||
|
|
android: xxxxxxxxxxxxxxxx
|
|||
|
|
ios: xxxxxxxxxxxxxxxx
|
|||
|
|
|
|||
|
|
# Amazon广告的AppId(变现提供)
|
|||
|
|
amz_app_id:
|
|||
|
|
android: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
|
|||
|
|
ios: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
|
|||
|
|
|
|||
|
|
# Amazon广告的Banner Slot Id(变现提供)
|
|||
|
|
banner_amz_slot_id:
|
|||
|
|
android: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
|
|||
|
|
ios: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
|
|||
|
|
|
|||
|
|
# Amazon广告的Interstitial Slot Id(变现提供)
|
|||
|
|
interstitial_amz_slot_id:
|
|||
|
|
android: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
|
|||
|
|
ios: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
|
|||
|
|
|
|||
|
|
rewarded_amz_slot_id:
|
|||
|
|
android: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
|
|||
|
|
ios: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
|
|||
|
|
|
|||
|
|
|
|||
|
|
remote_config:
|
|||
|
|
# 保留配置,插屏广告相关配置
|
|||
|
|
iads_config: '{"free_s":600,"win_count":4,"scene":"game_start","sp_scene":"new_block:120;reset_scs:120","retry_min_s":10,"retry_max_s":600,"amazon_enable":false,"imp_gap_s":120}'
|
|||
|
|
|
|||
|
|
# 保留配置,激励广告相关配置
|
|||
|
|
rads_config: '{"win_count":3}'
|
|||
|
|
|
|||
|
|
# 保留配置,Banner广告相关配置
|
|||
|
|
bads_config: '{"free_s":180,"win_count":1}'
|
|||
|
|
|
|||
|
|
# 保留配置,打点相关配置
|
|||
|
|
analytics_config: '{"cap":"firebase|facebook|guru", "init_delay_s": 10}'
|
|||
|
|
|
|||
|
|
products:
|
|||
|
|
# sku
|
|||
|
|
# 商品的ID,如果同时指定了android和ios,优先级sku为主
|
|||
|
|
# 支持参数定义,见下面的样例商品theme的sku
|
|||
|
|
#
|
|||
|
|
# android,ios
|
|||
|
|
# 各个平台的SKU,如果指定了sku将忽略这两个选择
|
|||
|
|
#
|
|||
|
|
# attr
|
|||
|
|
# possessive: 购买后永久有效
|
|||
|
|
# consumable: 可消耗商品
|
|||
|
|
# subscriptions: 订阅类商品
|
|||
|
|
#
|
|||
|
|
# method:
|
|||
|
|
# 购买的方式,支持iap,igc,reward
|
|||
|
|
# iap: 通过IAP购买的商品
|
|||
|
|
# igc: 通过虚拟游戏币购买的商品
|
|||
|
|
# reward: 通过奖励的方式获取的商品
|
|||
|
|
# 如果这个商品支持多种方式购买,可以通过逗号的形式进行串联
|
|||
|
|
#
|
|||
|
|
# capabilities:
|
|||
|
|
# 表示该商品的能力,现阶段只支持noAds
|
|||
|
|
#
|
|||
|
|
# manifest:
|
|||
|
|
# 指购买该商品后所获得的清单
|
|||
|
|
# category:
|
|||
|
|
# 该manifest的种类,这个主要用于后面的打点
|
|||
|
|
# 如果在guru_spec.yaml中定义相同的category,该category的名字必须能保证名字是不相似的,
|
|||
|
|
# 如果出现名字相似的情况下,将会视为冲突,如:noAds和no_ads这类相似的名字都将无法生成
|
|||
|
|
# details,details1,details2...detailsN
|
|||
|
|
# 指该商品的获取明细,如igc多少个,道具多少个
|
|||
|
|
# details中必须定义type和amount否则将无法生成
|
|||
|
|
# details中的type,现阶段系统预定义了igc(表示游戏内货币)
|
|||
|
|
# 如果需要处理模板库不支持的类型,需要在使用模板库的时候添加相应的distributor
|
|||
|
|
# 自定义参数
|
|||
|
|
# 可以指定不同的参数,也可以引用sku中的参数,见下面的样例商品theme的manifest
|
|||
|
|
# 如果在guru_spec.yaml中定义相同的category的商品,自定义参数必须一至,
|
|||
|
|
# 否则将无法生成
|
|||
|
|
#
|
|||
|
|
|
|||
|
|
no_ads:
|
|||
|
|
android: so.a.iap.noads.699
|
|||
|
|
ios: so.i.iap.noads.699
|
|||
|
|
attr: asset
|
|||
|
|
method: iap,reward,igc
|
|||
|
|
manifest:
|
|||
|
|
category: "no_ads"
|
|||
|
|
|
|||
|
|
no_ads_coin_bundle:
|
|||
|
|
android: so.a.iap.noads.coin.799
|
|||
|
|
ios: so.i.iap.noads.coin.799
|
|||
|
|
attr: asset
|
|||
|
|
method: iap
|
|||
|
|
capabilities: noAds
|
|||
|
|
manifest:
|
|||
|
|
category: "no_ads"
|
|||
|
|
details:
|
|||
|
|
type: "igc" # in-game currency
|
|||
|
|
amount: 500
|
|||
|
|
details1:
|
|||
|
|
type: "cup"
|
|||
|
|
amount: 1
|
|||
|
|
details2:
|
|||
|
|
type: "frag"
|
|||
|
|
amount: 20
|
|||
|
|
|
|||
|
|
theme:
|
|||
|
|
sku: "theme_{theme_id}"
|
|||
|
|
method: igc,reward
|
|||
|
|
attr: possessive
|
|||
|
|
manifest:
|
|||
|
|
category: "theme_{1}"
|
|||
|
|
theme_id: "{1}"
|
|||
|
|
|
|||
|
|
# theme2:
|
|||
|
|
# sku: "theme2_{theme_id}"
|
|||
|
|
# method: igc,reward
|
|||
|
|
# attr: possessive
|
|||
|
|
# manifest:
|
|||
|
|
# category: "theme"
|
|||
|
|
# theme_id: "{1}"
|
|||
|
|
# details:
|
|||
|
|
# type: "theme"
|
|||
|
|
# amount: 1
|
|||
|
|
# details2:
|
|||
|
|
# type: "theme3"
|
|||
|
|
# amount: 1
|
|||
|
|
|
|||
|
|
prop:
|
|||
|
|
sku: "theme_{prop_id}_{pc_id}"
|
|||
|
|
method: igc,reward
|
|||
|
|
attr: possessive
|
|||
|
|
manifest:
|
|||
|
|
category: "prop"
|
|||
|
|
details:
|
|||
|
|
type: "prop"
|
|||
|
|
amount: 1
|
|||
|
|
theme_id: "{1}"
|
|||
|
|
details2:
|
|||
|
|
type: "pc"
|
|||
|
|
amount: 1
|
|||
|
|
theme_id: "{2}"
|
|||
|
|
|
|||
|
|
no_ads2:
|
|||
|
|
android: so.a.iap.noads.699
|
|||
|
|
ios: so.i.iap.noads.699
|
|||
|
|
attr: possessive
|
|||
|
|
method: iap
|
|||
|
|
capabilities: noAds
|
|||
|
|
manifest:
|
|||
|
|
category: no_ads
|
|||
|
|
details:
|
|||
|
|
type: no_ads
|
|||
|
|
amount: 1
|
|||
|
|
ignore_sales: true
|
|||
|
|
|
|||
|
|
coin200:
|
|||
|
|
android: so.a.iapc.coin.200
|
|||
|
|
ios: so.i.iapc.coin.200
|
|||
|
|
method: iap
|
|||
|
|
attr: consumable
|
|||
|
|
points: true
|
|||
|
|
manifest:
|
|||
|
|
category: coin
|
|||
|
|
details:
|
|||
|
|
type: coin
|
|||
|
|
amount: 200
|
|||
|
|
|
|||
|
|
stage_pack:
|
|||
|
|
android: so.a.iap.stage.1
|
|||
|
|
ios: so.i.iap.stage.1
|
|||
|
|
attr: consumable
|
|||
|
|
method: iap
|
|||
|
|
manifest:
|
|||
|
|
category: "stage_1"
|
|||
|
|
details:
|
|||
|
|
type: "stage" # in-game currency
|
|||
|
|
amount: 1
|
|||
|
|
stage: 1
|
|||
|
|
|
|||
|
|
premium_week:
|
|||
|
|
android: "m2.a.sub.premium"
|
|||
|
|
ios: "m2.i.sub.premium.p1w"
|
|||
|
|
attr: subscriptions
|
|||
|
|
method: iap
|
|||
|
|
capabilities: noAds
|
|||
|
|
base_plan: weekly
|
|||
|
|
group: premium
|
|||
|
|
offers:
|
|||
|
|
- freetrial
|
|||
|
|
- discount
|
|||
|
|
manifest:
|
|||
|
|
category: "sub"
|
|||
|
|
details:
|
|||
|
|
type: "igc"
|
|||
|
|
amount: 8000
|
|||
|
|
|
|||
|
|
premium_year:
|
|||
|
|
android: "m2.a.sub.premium"
|
|||
|
|
ios: "m2.i.sub.premium.p1y"
|
|||
|
|
attr: subscriptions
|
|||
|
|
method: iap
|
|||
|
|
capabilities: noAds
|
|||
|
|
base_plan: yearly
|
|||
|
|
group: premium
|
|||
|
|
offers:
|
|||
|
|
- freetrial
|
|||
|
|
- discount
|
|||
|
|
manifest:
|
|||
|
|
category: "sub"
|
|||
|
|
details:
|
|||
|
|
type: "igc"
|
|||
|
|
amount: 16000
|
|||
|
|
|
|||
|
|
theme_mul:
|
|||
|
|
sku: "theme_{category}_{theme_id}"
|
|||
|
|
attr: possessive
|
|||
|
|
method: igc
|
|||
|
|
manifest:
|
|||
|
|
category: "{1}"
|
|||
|
|
theme_id: "{2}"
|
|||
|
|
cate: "{1}"
|
|||
|
|
|
|||
|
|
# adjust 相关配置
|
|||
|
|
adjust_profile:
|
|||
|
|
# 对应adjust的appToken,必填项
|
|||
|
|
app_token:
|
|||
|
|
android: testapptoken
|
|||
|
|
ios: testapptoken
|
|||
|
|
|
|||
|
|
# 如果有对应的事件映射在这里统一定义
|
|||
|
|
event_map:
|
|||
|
|
level_start:
|
|||
|
|
android: hq0xzz
|
|||
|
|
ios: b8khry
|
|||
|
|
|
|||
|
|
iap_purchase:
|
|||
|
|
android: yzy3uh
|
|||
|
|
ios: z0gje7
|
|||
|
|
params: true
|
|||
|
|
sub_purchase:
|
|||
|
|
android: yzy3uh
|
|||
|
|
ios: z0gje7
|
|||
|
|
params: true
|
|||
|
|
|
|||
|
|
level_end:
|
|||
|
|
android: so63k4
|
|||
|
|
ios: 1p8z5t
|
|||
|
|
|
|||
|
|
tutorial_complete:
|
|||
|
|
android: 95fu7q
|
|||
|
|
ios: 1p8z5t
|
|||
|
|
|