一、分享的链接/口令值获取时机:不适合提前获取再拼接而成,而是需要时候再请求接口
推荐:需要请求接口。(目的是为了省得分享时候再请求)
不推荐:提前给值,然后自己去拼接。(即启动后的某个时刻,请求全局分享配置信息,后续分享的时候使用该信息拼接。)
好处:分享时候,完全不需要前端逻辑,而是完全请求接口,且不用去担心接口内部读库的频次操作。
不推荐的原因/方案缺点:
①不利于后期维护。如要在大部分(但不是全部)分享链接中添加之前遗漏的分享者uid。
②特殊场景,无法达到省请求的目的。如当最终分享链接还要经过后台(如动态短链)时,原本希望不用再请求的最后分享值还是得再请求。
不推荐的原因/方案缺点举例说明如下:
可能形式①:固定的域名链接 + “固定属性参数(常为分享人uid)”+ 其他属性参数
示例:http://www.company.com/app/shareGoods?uid=123&objectType=goodsDetail&objectId=goodsId
- 固定属性参数(常为分享人uid):不一定都需要或不需要
- 优化方案:除其他属性参数外,其他全部由后台提供。即 http://www.company.com/app/shareGoods?uid=123
可能形式②:动态短链(背景:以防被误封)
- 固定属性参数(常为分享人uid):不一定都需要或不需要
二、分享请求接口的参数与返回值结构规范
1、结构规范
请求接口参数与返回值的示例如下:
1 | // request |
代码可点击查看: 分享流程代码示例
2、request 结构可选入参是否从前端直接提供的衡量依据
分享时候,建议从前端直接提供的参数,以分享商品为例
| 可选参数 | 描述 | 是否从前端取 | 原因 |
|---|---|---|---|
| goodsTitle | 商品名称 | 建议 | 直接从前端取,可省去接口通过id去内部获取各种数据 |
| goodsImageUrl | 缩略图 | 建议 | 直接从前端取,可省去接口通过id去内部获取各种数据 |
| 不建议 |
三、复制分享的口令回APP
1、复制分享的口令回APP的流程图
![]()
图片来源:《分享相关(含微信、粘贴板).graffle》中的【粘贴板】
附1、口令介绍
实际口令举例:
1 | { |
理论口令格式(文案为火星文等,且有些口令有内部包含分享链接的情况):
1 | { |
实际口令格式(文案为火星文等,且有些口令有内部包含分享链接的情况):
1 | { |
2、查找哪些SDK使用了粘贴板
四、微信内网页跳转 APP 功能
五、未上架应用的微信每日分享100次限制及分享域名被屏蔽的解决方案
100次限制规定见官方文档:分享与收藏功能
官方对分享的其他问题,请看: 分享与收藏接口
其他解决方案的相关搜索文档:
不上应用市场的企业内部APP,需要放开分享100次限制怎样处理?
2023-05-15 社区运营专员-x
你好,请按照指引提供具体的应用运行图且提供一份说明应用功能目的,只限不做他用加盖公章。
企业内部APP,不上架应用市场,但需要使用微信分享,怎么解决100次限制问题?
2024-07-08 社区技术运营专员–许涛
你好,不支持
iOS使用苹果商务管理的方式上架App Store,但是微信分享次数还是有100次限制,怎么解决?
2024-04-29 社区运营专员-hh
你好,open邮箱账号提供一下
一个不建议用的方案(未落地过):《分享相关(含微信、粘贴板).graffle》中的【未上架应用的微信每日分享100次限制及分享域名被屏蔽的解决方案】
对于iOS开发中未上架应用的微信分享限制问题,微信平台规定若移动应用未上架,则每天的分享量受到限制为100次,这包括分享到会话和朋友圈,主要用于满足调试需求 。针对分享域名被屏蔽的问题,可以采取以下几种解决方案:
- 域名备案:确保分享链接的域名已经完成备案,并且加入微信白名单,避免因备案问题导致域名被封 。
- 使用中转页跳转:设置中转页进行跳转,同时去除来源,保证即使中转页面被封,流量不会流失 。
- 分散域名访问:通过分散和切换域名来降低单一域名的曝光率,减少被封风险 。
- 域名监控系统:使用域名监控系统自动检测域名是否被封,避免使用有不良记录的域名 。
请注意,这些方法可以在一定程度上缓解域名被封的情况,但无法完全避免。开发者应持续关注微信的相关政策更新,以确保分享活动符合规定 。
附1、分享流程代码示例
1 | class ShareUtil { |
附:分享网页的代码如下
1 | class ShareInfoRequestAndSendUtil { |
附2(不用看):分享时候,完全不需要请求接口,而是完全由前端拼接出完整分享的返回结构值
1.1、本地入参1:启动/前后台切换得到的全局Gobal信息中的分享配置模型 objectShareConfig
1 | Map<String, dynamic> objectShareConfig = { |
1.2、本地入参2:为具体object选择分享时候,提供的入参模型 dynamicShareParams
1 | Map<String, dynamic> dynamicShareParams = { |
1.3、计算得到最终分享信息的结构模型(=本地入参1+本地入参2)
1.3.1、计算过程如下
1 | "shareTo": dynamicShareParams["shareTo"], // 分享到哪 |
附,上述各种分享都必备的值,放于临时变量供取及加工,示例如下:
1 | // 各种分享都必备的值 |
口令分享值的获取过程如下:
1 | // 口令分享需要的值; |