在Facebook SDK事件刷新

时间:2015-10-23 12:08:11

标签: c# objective-c https xamarin ios9

情况

让我们的应用程序为iOS 9做好准备会出现HTTP调用问题,导致在应用程序日志中以15s间隔定期出现以下错误:

NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9824)

似乎是这种情况,因为Facebook SDK应用事件会定期刷新,如documentation所述......

  记录时不会立即发送

事件。他们在很多情况下缓存并刷新到Facebook服务器:   当事件计数阈值通过时(当前100个记录的事件)。   通过时间阈值(当前为15秒)。   当应用程序进入后台时,然后返回到前台。

取消激活AppEvents.ActivateApp ();禁用日志消息,因此这绝对是源。

这个问题似乎出现了,因为Facebook SDK没有使用SSL提供应用事件。因为将这些行添加到info.plist中,如herehere所述,在某种程度上解决了这个问题:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <!-- ... -->
    <key>NSAppTransportSecurity</key>  
    <dict>  
        <key>NSAllowsArbitraryLoads</key><true/>  
    </dict> 
 </dict>
</plist>

另一方面,这使得应用程序只使用HTTP。

解决方法

Xamarin documentation表示添加例外DOMAIN,而不是为arbritary加载打开应用。

  

注意:如果您的应用程序需要连接到不安全的网站,则应始终使用NSExceptionDomains输入域作为例外,而不是使用NSAllowsArbitraryLoads完全关闭ATS。 NSAllowsArbitraryLoads只能在极端紧急情况下使用。

我尝试将这段代码添加到info.plist中但没有成功。说出错误信息仍然存在。

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSExceptionDomains</key>
    <dict>
        <key>{DOMAIN}</key>
        <dict>
            <key>NSIncludesSubdomains</key>
            <true/>
            <key>NSExceptionsAllowsInsecureHTTPLoads</key>
            <true/>
        </dict>
    </dict>
</dict>

但是在这种情况下DOMAIN会是什么?我们尝试了; www.facebook.comfacebook.com。最好是为Facebook SDK激活SSL,但如果不可能添加例外,那么域也是一种有效的解决方法。

问题

是否可以使Facebook SDK使用SSL,如果可以,如何使用?筛选文档并没有为此带来任何结果。也许我们在搜索引擎上搜索错误的条款,有什么建议吗?

注意

我们目前正在使用4.5.1版本中的Facebook SDK Xamarin组件。

0 个答案:

没有答案