需求:
在web端发送游戏应用通知,进行好友邀请和拉新,在fackbook 通知中显示如: ( xxx-user在 xx 应用里给你发了请求) 点击这个请求的效果是跳转对应的App Store or 谷歌应用市场。如果已经安装游戏的,直接跳到游戏应用中。
遇到的问题:
- 这是属于游戏通知,不是分享的范畴。
- FB邀请是https 和 域名形式才能进行获取、回调。
- 开发过程中,正常发送了通知,安卓可以收到、ios 没有收到
- 点击通知请求,没有跳到对应的市场,而是在应用中心,显示不支持该平台
解决办法:
- 第一点查看文档找到对应的功能点,是游戏请求
- 第二点https证书文档,本地弄一个https 证书。域名形式则通过搬定host 解决 本地https 证书(页面目录下执行):
openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout key.pem -out cert.pem
http-server -S -C cert.pem -o
// http-server -S -C cert.pem -o -p 443
- 第三点,最坑,是因为Bundle ID 不对导致没有收到游戏通知,还有iPhone store 的编号没有填写!得登陆facebook的应用后台,设置安装的包名信息、类名信息、还有选上单点登陆
- 第四点,安卓和ios 都选上单点登陆和深度链接就可以了。
相关代码:
<script>
(function(d, s, id){
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {return;}
js = d.createElement(s); js.id = id;
js.src = "https://connect.facebook.net/en_US/sdk.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
</script>
// 初始化,传入facebook 的应用ID
window.fbAsyncInit = () => {
FB.init({
appId : appID,
cookie : true,
xfbml : true,
version : 'v3.2'
});
FB.AppEvents.logPageView();
};
// 利用FB .ui apprequest 发送通知
window.FB.ui({
appID,
method: 'apprequests',
message: '这是应用测试',
title: 'Invite friends to play',
}, function(response){
if(response && response.to.length>0){
console.log('Welcome! Fetching your information....1111 ');
}
console.log(response);
});
// 分享相关代码 ====
<div class="fb-share-button" data-href="https://www.katoto.cn/" data-layout="button" data-size="small">
<a target="_blank" href="https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fwww.baidu.com%2F&src=sdkpreparse" class="fb-xfbml-parse-ignore">分享</a>
</div>
换起列表效果