菜鸟教程小白 发表于 2022-12-12 14:28:53

ios -/app/app_link_hosts 图形 API 在 iOS 中不适合我


                                            <p><p>在发布之前,我尝试了这个链接 <a href="https://stackoverflow.com/questions/24156885/using-app-links-hosting-api-for-link-shared-on-facebook-from-ios-app" rel="noreferrer noopener nofollow">Using App Links Hosting API for link shared on Facebook from iOS app</a>
没有任何成功。这是我的代码</p>

<pre><code>// I have declared my FBSession object here in app delegate.
AppDelegate *appDelegate = (AppDelegate*)[ delegate];
//Create dict params
NSDictionary *paramsForAppLinksHost = [NSDictionary dictionaryWithObjectsAndKeys:
                                       @&#34;appName&#34;, @&#34;name&#34;,
                                       @&#34;myScheme://&#34;, @&#34;al:ios:url&#34;,
                                       @&#34;appStoreId&#34;, @&#34;al:ios:app_store_id&#34;,
                                       @&#34;appName&#34;, @&#34;al:ios:app_name&#34;,
                                       @&#34;{should_fallback:false}&#34;, @&#34;web&#34;,
                                       nil
                                       ];


//Call graph API
FBRequest *request = [ initWithSession:appDelegate.mpFacebookSession
                                              graphPath:@&#34;/app/app_link_hosts&#34;
                                             parameters: paramsForAppLinksHost
                                             HTTPMethod:@&#34;GET&#34;];

FBRequestHandler handler =
^(FBRequestConnection *connection, id result, NSError *error)
{
    // output the results of the request
    ;
};
;
;
</code></pre>

<p>结果:打印结果说明:
    {
      数据 = (
      );
    }</p>

<p>错误:无。 </p>

<p>我在这里做错了什么?对我来说,这个 Facebook 文档确实缺乏细节。发生这种情况是因为任何权限问题吗?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>首先我想说Facebook doc真的很烂,它从来没有真正详细说明过任何事情,在做了所有这些之后我才知道Mobile Safari不支持应用链接:( .
这意味着如果没有 Facebook 应用程序,这将不起作用</p>

<p>所以我们有两个选择。</p>

<ol>
<li><p>1.如果我们实现应用链接,这将不适用于没有 fb 应用的人。</p></li>
<li><p>如果我们使用 URL 并分享到 FB 并单击它重定向并使用服务器端的某些架构来启动您的应用程序,如果您安装了 Facebook 应用程序,这也不起作用,因为新的 FB 应用程序有自己的浏览器,似乎不支持使用 document.location() 进行重定向。同样在 iOS 8.0 中使用 document.location () 重定向(将使用模式)由于某种原因无法正常工作。所以基本上我被迫使用应用链接:( </p></li>
</ol>

<p>来到我的问题,这是由于参数不匹配但API调用没有说明它,我使用以下代码获取App链接ID。由于我的问题中的链接在那个答案中调用它不起作用,所以我这样使用。希望它能节省一些人的时间。</p>

<p>//获取应用 token ,是应用 token 不是用户 token </p>

<pre><code>&gt; NSDictionary* infoDict = [ infoDictionary];   
&gt; NSString* pFaceBookAppID = ;
&gt; NSString *pStr = [NSString   
&gt; stringWithFormat:@&#34;https://graph.facebook.com/oauth/access_token?grant_type=client_credentials&amp;client_id=%@&amp;client_secret={app_secret_key}&#34;,pFaceBookAppID];
&gt; NSURL* pWebUrl = ; NSString *fullToken =   
&gt; [NSString stringWithContentsOfURL:pWebUrl   
&gt; encoding:NSUTF8StringEncoding error:nil]; NSArray *components =   
&gt; ; self.mpFBAppToken =   
&gt; ;
</code></pre>

<hr/>

<p>//现在可以这样调用获取app ID了,</p>

<pre><code>    NSArray *pArray = @[@{@&#34;url&#34;:{URL_SCHEMA},@&#34;app_store_id&#34;:{app_store_id},@&#34;app_name&#34;:{{app_name}}];
    NSData *jsonData = ;
    NSString *jsonString = [ initWithData:jsonData encoding:NSUTF8StringEncoding];

    NSDictionary *pDict = @{@&#34;should_fallback&#34; :@&#34;false&#34;};
    jsonData = ;
    NSString *jsonWebString = [ initWithData:jsonData encoding:NSUTF8StringEncoding];

    pRequestString = ;

    NSURL* pWebUrl = ;
    NSData *myRequestData = length:];
    NSMutableURLRequest *request = [ initWithURL:pWebUrl];
    ;
    ;
    ;

    mpConnection = [initWithRequest:request delegate:self] ;
</code></pre>

<p>//现在你必须实现连接委托(delegate)函数来获取结果,它将包含应用程序链接 ID,使用它来获取 URL,如下所示。
获取网址..</p>

<pre><code>    NSDictionary *pParams = @{@&#34;access_token&#34;:self.mpFBAppToken};
    [FBRequestConnection startWithGraphPath:self.mpAPPLinkID
                                 parameters:pParams
                                 HTTPMethod:@&#34;GET&#34;
                        completionHandler:^(
                                              FBRequestConnection *connection,
                                              id result,
                                              NSError *error
                                              ){
                                                         }];
</code></pre>

<p>//现在在 URL 中只需附加您想要作为查询字符串传递的参数,这样您就可以像这样从应用程序委托(delegate)的 openURL 方法轻松解析它...</p>

<pre><code>&gt;[FBAppCall handleOpenURL:url
&gt;                              sourceApplication:sourceApplication
&gt;                              fallbackHandler:^(FBAppCall *call)
&gt;                              {
&gt;                                    // Retrieve the link associated with the post
&gt;                                    NSURL *targetURL = [ targetURL];
&gt;                                 if([length] &gt; 0)
&gt;                                 {
//Parse Query string by some method;                        
&gt;                                       NSMutableDictionary *pDict = [initWithDictionary:[self
&gt; parseURLParams:]]; } }];
</code></pre>

<p>希望这对某人有所帮助。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios -/app/app_link_hosts 图形 API 在 iOS 中不适合我,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/28827537/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/28827537/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios -/app/app_link_hosts 图形 API 在 iOS 中不适合我