参考文章:
Google Play上架/更新被拒的原因及解决方法汇总
Google Play In-app Billing 踩过的那些坑
咨询帮助:开发者帮助链接
咨询帮助:政策支持团队
咨询帮助:Payment centre支持团队
官方文档:海外服务费变动
官方文档:迁移app
海外项目和国内项目差异性还是很大的,从注册到发布成功,海外项目就很麻烦的路要走,下面结合公司项目的账号注册和项目发布对这个流程进行整理,方便后续查询和积累。
-
google开发者账号的创建与认证
- 注册谷歌邮箱账号
- 将账号开通为开发者账号,包括个人和组织两种,组织账号需要组织信息,包括备用邮箱,先前两部不再具体描述要什么给什么即可。
- 账号开通成功支付25美元,需要注意的是信用卡支付时候添加的地址会和后续的认证人员的证件地址进行匹配。
- 账号认证,可以认证的证件包括身份证/驾照/护照/居住证,由于公司注册是在香港,开发者账号也是香港所以需要香港的证件认证,香港驾照是个不错的选择。
-
facebook添加项目及其Android密钥散列
- 进入开发者后台创建应用,需要应用名称+联系邮箱+商务管理账号,特别需要注意的是创建项目的时候如果已经校验组织结构创建的时候就绑定对应的结构(不然创建的是普通项目后续更麻烦)还有就是创建项目时候注意选择创建项目的类型:fb提供了fb登录,游戏,其他三个种类,通常是使用其他然后选择business创建项目(非游戏类的,选择这个能够绑定更多的功能及其种类),fb登录仅提供对应的登录功能,其他功能不能够添加。
- 创建应用后添加对应的平台,Android需要密钥散列+包名/类名(用于deeplink跳转),ios需要包名+iphone store编号
- 密钥散列可以看做app的唯一加密标识,借助于fb提供的命令对app的签名进行处理即可。具体命令可以在fb查找也可以自行google等
- keytool -exportcert -alias 签名别名 -keystore 签名 | openssl sha1 -binary | openssl base64 (注意到其文件夹下)
- fb的登录需要项目上线且获取到对应的api的访问权限,上线需要先提供一个对应的协议地址,提供后即可上线,api访问权限需要手动操作去授权。操作在fb控制台的应用审核的权限和功能。
- fb权限的获取:项目设置对应的隐私链接,设置完成后将其状态修改为上线,然后在应用审核的权限和功能模块中申请email和public_key 权限,申请需要账号及其密码,申请成功后即获取到对应的登录,需要注意的是添加的功能是facebook登录功能,不是facebook企业登录功能(添加产品地方选择企业facebook登录内部有按钮选择切回facebook登录,使用facebook登录不使用企业登录不然容易出bug)。
-
firbase添加项目及其添加ios和Android产品
- 进入后台控制台 点击添加项目输入项目名称选择是否firebase分析且选择对应的分析账号后创建成功
- 项目创建成功后添加对应的应用,包括ios,Android,web,unity,flutter。
- 添加Android产品需要包名+产品别名(可选)+ 签名的sha1值
- ios和Android产品都添加后可以下载对应的配置json文件放到项目中后续发布版本依赖于文件上传混淆的mapping文件等。
- firebase创建新的app后firebase会在谷歌云平台创建一个项目对应的云项目,此项目没有启动对应的api也没有对应的同意屏幕(创建auth项目需要),仅有一个对应的服务账号,需要对应的进行配置,即:先是创建对应的同意屏幕,进而创建对应的客户端id项目,需要注意的是项目需要分开创建即web,Android,ios需要分开创建。不进行这一步会出现两个问题:一是项目没有对外的信息配置,进而出现下面问题,而是下载的json文件等没有相应的验证信息,没有验证信息不会影响发包但是会影响谷歌登录及其推送等。
- firebase需要配置对应的联系地址,不配置firebase登录会出现对应的12500异常
-
解决firebase的推送问题服务端发送推送消息需要密钥验签(json文件)具体位置如图(生成密钥即可):
google admob添加app及其添加广告单元和聚合平台
-
google 添加支付条目
- google pay 支付流程中需要先添加商品条目即充值的单个item,此item id 需要和项目后端服务创建的条目id保持一致,即充值时需要通过此id去谷歌进行查询对应的条目及其价格。
- 添加条目前需要先配置对应的收款账户,有了收款账户后去配置对应的价格模板,价格模板需要设置名称+价格,价格是账户注册所在地的货币,通常是以美元显示,以所在地货币收款,涉及到对应的汇率计算。
- 配置对应的价格模板后就可以创建对应的商品条目了,创建需要设置先前提到的id,名称,和选择一个价格模板。
-
谷歌支付测试必须项目上线后才能进行,即发布内测版本,内测版本发布有需要一堆的配置,参考后面。
-
发布项目内测的流程:
- as 生成对应的aab文件需要注意的是翻墙(过程中会上报对应的mapping文件)
- 上传对应的aab文件 修改name及其更新内容 发布release 进行审核,审核成功即可发布。
- 初次发布需要进行项目的配置及其数据安全隐私等一系列的配置 有两个场景可以找到发布前的需要配置的所有的项,一是DashBoard的流程图二是主功能列表的App content选项中逐一配置。
- 项目审核被拒后按照邮件修改完成后点击publishing overview 可以重新发起审核,此处使用上一个版本重新发起审核,也可以新建一个版本重新上传审核,无需两者同时进行。
- 配置对应的DashBoard的内容的时候不要忘记配置对应的开发者的信息数据包括开发者的名称图标和背景图等等。
-
项目因为内容版权问题被拒后的处理?
- 内容版权被拒后可以发起申诉,具体流程和其他申诉一致,但是不建议,因为不做任何操作的申诉基本不起作用还有就是换来的结果是谷歌更进一步的报复,此种情况最初是不让后续版本更新,申诉后可能就直接给你下架了。
- 根据拒绝邮件提供的流程可以将授权文件上传,上传后再提交新包(没有授权文件最好是内容下架),初始提交猜想是由于项目涉及到内容版权就直接给你下架要授权文件,并不是某一本侵权或者被举报侵权,后两者处理可能更麻烦一些。如果是不得不吐槽一下谷歌你提前让提交不好么,何必要上架后又下架。
- 还有这个属于政策小组范围,若处理对应的反馈和咨询需要联系政策小组,不然google play和developer都给不了什么有用的信息(很客气的告诉你我们没有培训过这一块),政策小组也基本没用,咨询后都后续过审了还没有收到回复邮件。
-
google 发布内测版本签名控制
-
谷歌发布app,上传aab文件有个签名保护机制,即谷歌会进行二次签名,二次签名使用的签名文件用户可以指定,建议不使用谷歌的签名文件 因为拿不到对应的key等可能针对后续的加固申请三方sdk等造成影响,使用自己的签名配置如下处理即可:
-
google 获取应用许可的位置
谷歌 pay等api访问需要一个google_public_key 此公钥创建项目成功后会自动生成,在下面位置可以获取。
-
google 支付后端验单配置整理(具体参考上面的参考文章)
- play控制台 api access 关联工程(关联当前的或者创建一个新工程),初次是没有工程的需要创建一个工程(在play和service都可以)参考GooglePlay内购服务器验单配置
- google cloud 创建一个新的工程(貌似最多可以创建30个工程),上面创建一个新工程也是在这个后端创建新工程。
- 启动api与服务 并创建服务账号,具体参照上面,需要注意的就是权限是可选项。创建服务账号需要特别注意第二步对齐进行授权不授权不然在play中绑定的时候查找不到对应的服务账号。
- 进入服务账号创建对应的密钥,注意保存密钥的json文件。
- 创建author 客户端 需要注意的是创建一个web application
- 将author客户端和服务账号两边进行关联,需要注意的是云平台那边需要添加app 且服务访问权限(服务账号添加对应的app及其权限授予和邀请账号)。
-
注意此创建成功以后还需要进行发布,发布成功以后才能测试,不然验单会出现401无权限的bug,屏幕快照需要特别注意的是第二步中的添加对应的域名。
谷歌2021年7月起调整对应的渠道服务费用,前100万15%的费率后续的30%的费率 不过不是免费的需要注册对应的账号群组并关联到对应的后台开发账号上,对应的可以参考文章。
付款资料账号类型:
google play涉及到应用内购买需要配置对应的付款资料,付款资料分为个人和组织两种类型,个人和组织,需要注意的是组织开发者账号需要对应组织付款资料不然后续税费验证或者其他的某个操作可能会卡在这个地方。
通常支付开发者账号的时候会通过支付的信用卡类型自动生成一份付款资料,建议公司账号此处不要用个人账户支付,个人账户生成的是付款资料类型是个人的,不过后续开发者账号绑定对应的付款资料的时候可以再重新创建一份付款资料创建付款资料的时候一定注意其类型为组织,因为这个一旦创建就没有办法改变,和开发者账户绑定后也就无法解绑和删除,只有停止账号使用才能删除。
两个账号不一样,验证不通过则谷歌play不结算,即应用内支付的钱不能正常结算到自己的卡中,解决方法仅有重新注册开发者账号转移app到新的开发者账号中去。Google Play 支付 SDK 接入时遇到的坑-
如何转移app(一个开发者账号到另一个开发者账号中去)
- 重新注册开发者账号,校验账号,新建新的付款资料注意其类型为组织,并将其新账号名称,id,付款资料id和商户id通过邮件回复给谷歌(校验不通过发给的邮件)
- 回到原开发者账号,进行app的迁移,需要添加的信息包括:原账号的开发者账号25美元交易id,新账号的25美元交易id,新账号的id,迁移原因。
- 回到需要迁移app的邮件回复其邮件,将新账号的下面信息回复:developer account/developer name/payments profile ID/Merchant ID
- 原账号申请转移后需要到新账号接受转移然后等待48小时的谷歌审核
- 谷歌审核后若app涉及到应用内购会处于下架状态,需要调试后重新上架,迁移app通常影响到下面几个状态:充值,谷歌登录,推送,firebase相关,需要测试并修正状态,修正后重新上线即可。
- app迁移后迁移的内容包括:app对应的内购条目(价格模板没有,如需要后期配置即可),app对应的项目信息,app对应的权限及其数据安全信息,测试账号没有需要重新添加。
-
admob 广告的 ump sdk的集成步骤:
- 配置对应的授权弹窗 在admob的后台即可以操作
- 集成sdk按照文档代码进行集成即可,需要注意的是弹出时机可以和广告进行结合。
- 由于此sdk是针对欧盟及其英国在内的国家 虽然开发文档提供了对应的测试方法,但是admob后台也提供了所有地区弹出的配置,可以配置为所有地区弹出进行测试,测试完毕再到欧盟设置。
- 代码中的貌似死循环其实是由于其状态控制的,当其状态是request的时候再次执行状态会变成obtain的状态。
- admob广告异常:账号尚未获得批准,admob申请账号后添加广告单元及其对应的聚合后不能访问响应这个异常,是因为账号需要审核批准,其审核配准的前提是上线google play成功 状态查询可以访问对应app的app setting选项。
-
admob聚合平台sdk集成
-
备注:
- 先集成play-ads整的sdk,再将聚合的分平台的聚合sdk集成,需要特别注意的是平台sdk和分平台的sdk版本号必须匹配一致,不然会出现请求不到对应的广告的bug(升级play平台的sdk其他分平台对应的sdk版本号需要过一篇匹配升级)。
- 集成sdk后在application中需要进行广告sdk的初始化,对应的初始化代码参考文档即可。
- 通过admob提供的测试设备可以非常方便的测试分平台的是否集成成功,测试设备的添加获取到设备的广告id添加到admob的后台注意设置摇一摇唤醒测试广告页面。通过测试广告页面的配置可以方便的测试分平台的集成。
-
-
关于广告的几个异常点整理:
-
备注:集成admob的sdk及其聚合sdk后出现如图的异常原因是 sdk的初始化api没有完成就调用了loadad的api,修复将初始加载ad的api放到sdk初始化完成即可。
- admob的广告流量限制:
- admob的无效流量说明可以参考官方文档。
- admob会对app中广告的请求,展示,点击等进行监控,若监控过程中出现异常,比如请求和展示和点击不成比例等,就会以存在无效流量来限制广告的下放,针对此情况貌似也没什么办法,首先自己不要做刷量的操作等,其次开发阶段建议不要使用正式广告进行测试,不要点击加载到的广告,尽可能的避免出现无效流量进而被流量限制。
- admob的广告单元若被其他进行集成则不能直接复用admob创建的广告单元,需要针对其他集成单独创建广告单元,不过此时admob bindding广告的费用可能降低因为谷歌需要支付其他平台一些费用。
- max聚合平台的集成步骤:Android集成文档
- 创建广告单元
- 按照文档进行集成对应的sdk且聚合sdk
- 配置聚合后台的聚合网络的数据:(其他平台对应的广告单元的创建及其集成)
- 项目中显示max的测试页面通过测试页面进行测试环境和生产环境的聚合成功与否测试。
- 项目后端校验google pay或者订阅(即通过配置支付成功等google回调项目后端)配置如下:
-
在play的设置页面配置对应的主题即:
-
在google cloud 的服务后台的主题和订阅模块创建对应的订阅,即(注意跳转后需要登录验证):
-
-
-
web应用集成谷歌登录
谷歌登录集成官方文档
谷歌登录集成官方文档(已废弃)
谷歌云对应的设置
谷歌登录集成
集成流程:
18.1. 谷歌firebase后台创建对应的项目
18.2. 针对项目进行配置:签约方法中添加对应的提供方、设置中将web的域名添加进行授权,即:
18.3. 创建并配置完成后谷歌会在谷歌云自动创建对应的凭证及其web运用等。
18.4. 到自动创建的应用中添加对应的域名授权及其相关配置。
18.5. 根据提供的文档及其firebase提供的逻辑代码进行代码集成及其测试。
async onSignInGoogleSuccess () {
const firebase = require('firebase/app').default
const firebaseConfig = {
apiKey: '',
authDomain: '',
projectId: '',
storageBucket: '',
messagingSenderId: '',
appId: ''
}
firebase.initializeApp(firebaseConfig)
var provider = new firebase.auth.GoogleAuthProvider()
firebase.auth().signInWithPopup(provider).then((result) => {
// var credential = result.credential
// var user = result.user
console.log(result.additionalUserInfo.profile)
this.$store.dispatch('user/googleLogin', result.additionalUserInfo.profile).then(() => {
sessionStorage.clear()
this.$router.push({path: '/'})
})
}).catch((error) => {
console.log('google login error')
console.log(error.message)
this.$message.error('Login Failed')
})
}
备注:
* 注意vue的版本若是vue2不要集成v9以上的firebase sdk 会出现兼容问题,还有就是v8和v9及其以上的集成逻辑不同
* 无论谷歌集成还是fb集成都需要将其对应的域名添加到域名授权中去。
* 针对web 登录需要将云后台的项目推到生产模式,不然其只能使用测试用户登录