首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Facebook应用程序事件不会在iOS 14+的事件管理器中记录事件

Facebook应用程序事件不会在iOS 14+的事件管理器中记录事件
EN

Stack Overflow用户
提问于 2021-06-29 14:53:01
回答 1查看 966关注 0票数 0

测试环境

v.11.0.0

  • Device
  • Facebook SDK : iPhone X
  • iOS版本: 14.1

+预期结果

App事件--标准事件和自定义事件--都应该是iOS 14的记录。我们已经启用了AdvertiserTrackingEnabled by Settings.setAdvertiserTrackingEnabled(true)。我们已经检查了调试日志请求,saw SDK发送了事件成功。

+实际行为

即使我们确实设置了Settings.setAdvertiserTrackingEnabled(真)和调试日志请求成功发送事件。但它似乎没有被记录在仪表盘上。

EN

Stack Overflow用户

发布于 2022-11-25 06:52:54

我已经为我的应用程序之一开发了这些Facebook,用于获取应用程序事件。在14,15,16岁以下的iOS中,一切正常。

这些Facebook事件一旦应用程序在实际设备上运行就会出现,并且在该设备中已经安装了facebook应用程序及其登录,然后这些事件将出现在事件管理器中,否则将不会显示在事件管理器中。

  1. 应用程序添加到Facebook开发者页面中,并获取应用程序id和客户端令牌。

  1. 添加了信息plist,下面的行替换为应用程序ID和客户端令牌

NSUserTrackingUsageDescription ${PRODUCT_NAME}请允许跟踪用于为您提供更好和个性化的广告体验。CFBundleURLSchemes fb674454383521423

代码语言:javascript
运行
复制
<key>FacebookAppID</key>
    <string>674454383521423</string>
    <key>FacebookClientToken</key>
    <string>3067e472e89ff8d7c39a18f38d931301</string>
    <key>FacebookDisplayName</key>
    <string>AppName</string>

稍后在AppDelegate中,只需导入这两个框架并将这些代码添加到didFinshlunch方法中。

代码语言:javascript
运行
复制
import FBSDKCoreKit
import AppTrackingTransparency




 ApplicationDelegate.shared.initializeSDK()
     Settings.shared.isAdvertiserTrackingEnabled = true
    Settings.shared.enableLoggingBehavior(.appEvents)
    Settings.shared.isAutoLogAppEventsEnabled = true
    Settings.shared.isAdvertiserIDCollectionEnabled = true
    Settings.shared.enableLoggingBehavior(.developerErrors)
    Settings.shared.enableLoggingBehavior(.cacheErrors)
    Settings.shared.enableLoggingBehavior(.uiControlErrors)

下一步,我们需要添加这些函数

代码语言:javascript
运行
复制
func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
        

        if (url.scheme?.hasPrefix("fb"))! {

            ApplicationDelegate.shared.application(
                application,
                open: url,
                sourceApplication: sourceApplication,
                annotation: annotation
            )

        }
}

在app委托中添加这些传输安全许可警报,并将这些函数调用为活动方法,否则就不使用午餐方法。

代码语言:javascript
运行
复制
func getTrackingPermission() {
        if #available(iOS 14, *) {
            ATTrackingManager.requestTrackingAuthorization { status in
                switch status {
                case .authorized:
                    // Tracking authorization dialog was shown
                    // and we are authorized
                    Settings.shared.isAutoLogAppEventsEnabled = true
                    Settings.shared.isAdvertiserTrackingEnabled = true
                    print("Authorized")
                    
                    // Now that we are authorized we can get the IDFA
                    print(ASIdentifierManager.shared().advertisingIdentifier)
                case .denied:
                    Settings.shared.isAutoLogAppEventsEnabled = false
                    Settings.shared.isAdvertiserTrackingEnabled = false

                    // Tracking authorization dialog was
                    // shown and permission is denied
                    print("Denied")
                case .notDetermined:
                    // Tracking authorization dialog has not been shown
                    print("Not Determined")
                case .restricted:
                    print("Restricted")
                @unknown default:
                    print("Unknown")
                }
            }
        }
    }

最后一步在app委托中添加了这些方法。

代码语言:javascript
运行
复制
func applicationDidBecomeActive(_ application: UIApplication) {
        // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
       //AppUpdater.shared.showUpdate(withConfirmation: false)
        
        
        if #available(iOS 15.0, *) {
            ATTrackingManager.requestTrackingAuthorization(completionHandler: { status in
                switch status{
                case .authorized:
                    Settings.shared.isAutoLogAppEventsEnabled = true
                    Settings.shared.isAdvertiserTrackingEnabled = true
                    print(ASIdentifierManager.shared().advertisingIdentifier)
                    
                    break
                case .denied:
                    Settings.shared.isAutoLogAppEventsEnabled = false
                    Settings.shared.isAdvertiserTrackingEnabled = false
                    print(ASIdentifierManager.shared().advertisingIdentifier)
                    
                default:
                    break
                }
                
            })
        }
         
        AppEvents.shared.activateApp()
        
        
        
         
    }

通过这种方式,我们可以编写事件,请在类中添加这些框架,并编写如下的事件

代码语言:javascript
运行
复制
import FBSDKCoreKit

AppEvents.shared.logEvent(AppEvents.Name(FACEBOOK_EVENTS.paymentDone.rawValue))

代码语言:javascript
运行
复制
var fbParams: [AppEvents.ParameterName : AppEvents.ParameterValue] = [:]
        
        fbParams[AppEvents.ParameterName.content] = AppEvents.ParameterValue.init(rawValue: "10")
        fbParams[AppEvents.ParameterName.init(rawValue: "number")] = AppEvents.ParameterValue.init(rawValue: "200")
        
        AppEvents.shared.logEvent(AppEvents.Name.purchased, parameters: fbParams)
票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68181116

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档