facebook web端发送应用通知邀请

1,337 阅读2分钟

需求:

web端发送游戏应用通知,进行好友邀请和拉新,在fackbook 通知中显示如: ( xxx-user在 xx 应用里给你发了请求) 点击这个请求的效果是跳转对应的App Store or 谷歌应用市场。如果已经安装游戏的,直接跳到游戏应用中。

fackbook 官方技术文档

遇到的问题:

  • 这是属于游戏通知,不是分享的范畴。
  • 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&amp;src=sdkpreparse" class="fb-xfbml-parse-ignore">分享</a>
      </div>
    

换起列表效果