Closed danmaas closed 3 years ago
I'm having same issue. While testing on 14.5 beta 1 I could make everything work if I had all 3 flags on:
setAutoLogAppEventsEnabled:YES
setAdvertiserIDCollectionEnabled:YES
setAdvertiserTrackingEnabled:YES
And then initializing the API
When I started using the Beta 2 nothing works anymore no events, only app_launch
I was expecting based only on the documentation that if I set the auto log events on I would expect to have the app installs and app launch events. But... this is not what is happening.
+1 and in addition:
Looking at the iOS 14.5 requirements put forward by Apple:
https://developer.apple.com/app-store/user-privacy-and-data-use/#permission-to-track
It would appear (example (4)) that an app will be required to receive the user’s permission through the AppTrackingTransparency framework if the Facebook SDK is installed.
We know that setAdvertiserTrackingEnabled must be enabled in order for an app to send the app_install event automatically.
@danmaas can you clarify that your Goals/Expected Results (1) means using ATT?
It would be nice for clarification around this in Facebook's documentation when installing the SDK.
No, we don't want to touch ATT. The "consent" I was referring to above is more related to GDPR, where we have to get consent even for first-party data.
We made a product-level decision not to show the ATT pop-up dialog or use IDFA-based tracking, because it would be perceived very negatively by our user base.
If not using ATT/IDFA means that we cannot log any in-app events, other than SKAdNetwork-based install events, then so be it. But SKAdNetwork attribution seems broken right now and I really hope we can get it working.
My understanding of the Apple and Facebook docs is that it should be possible to get SKAdNetwork to feed App Install events into our iOS 14 ad campaigns, without ATT or IDFA. If I am wrong about this, please let me know!
(https://developer.apple.com/app-store/user-privacy-and-data-use/#attributing-app-installations):
"SKAdNetwork allows advertising networks to attribute app installations while preserving user privacy, so you do not need to use the AppTrackingTransparency prompt."
Thanks for the clarification, we are looking for the same thing. I'll let you know if I find anymore details or confirmation on anything.
An update on SKAdNetwork - we are starting to think that the SKAdNetwork App Install counts are actually correct, and it's just that Facebook's iOS 14 campaigns are doing a terrible job of targeting users who will install our app after clicking on the ad.
We usually see click-to-install conversion rates of 30-40% on other types of campaigns, but the new iOS 14 campaigns are only delivering 5-10% click-to-install rates.
The above results are from about $1,000 in ad spend on iOS 14 campaigns. Is that just too little to teach the FB algorithms to find good users? We hesitate to throw more money at this without knowing whether it is likely to improve things XD.
Experiencing the same "issue". We've increased spending for iOS 14 campaigns but the click to install conversion is terrible when compared to earlier campaigns at something like 4% or less. Android and Pre iOS14 campaigns with the same content did hugely better.
It's so bad that I've spent days looking through the documentation and source code of the facebook sdk only to find everything work as expected and end up in this github issue.
We have the same use case – we would like to send events without IDFAs or other user information which could be used to identify a user. Without sending events we are not able to config them for the SkAdNetwork. Could you (@danmaas) elaborate on how you set the _implicitlyLogged flag to 1 on all events?
@nutlike Here is the patch we use to force the _implicitlyLogged flag to 1 on all events, by adding it inside of the wrapper around AppEventsLogger.logEvent()/logPurchase()
. This applies to the react-native-fbsdk layer on top of the iOS SDK, but I'm sure you can do something similar in your own environment.
diff --git a/node_modules/react-native-fbsdk/src/FBAppEventsLogger.js b/node_modules/react-native-fbsdk/src/FBAppEventsLogger.js
index 25a99de..658f461 100644
--- a/node_modules/react-native-fbsdk/src/FBAppEventsLogger.js
+++ b/node_modules/react-native-fbsdk/src/FBAppEventsLogger.js
@@ -83,6 +83,11 @@ module.exports = {
let parameters = null;
if (typeof args[0] === 'object') {
parameters = args[0];
+ } else {
+ parameters = {};
+ }
+ if(true) { // DJM - the SDK doesn't seem to get events through to Facebook unless this flag is set
+ parameters['_implicitlyLogged'] = '1';
}
AppEventsLogger.logEvent(eventName, valueToSum, parameters);
},
@@ -95,6 +100,10 @@ module.exports = {
currencyCode: string,
parameters?: ?Params,
) {
+ if(!parameters) { parameters = {}; }
+ if(true) { // DJM - the SDK doesn't seem to get events through to Facebook unless this flag is set
+ parameters['_implicitlyLogged'] = '1';
+ }
AppEventsLogger.logPurchase(purchaseAmount, currencyCode, parameters);
},
Note, due to the lack of feedback on this issue of missing conversion events, and the poor performance of our test iOS 14 ad campaigns, we have stopped advertising on Facebook for now. We shifted our resources to better-performing sources, like iOS App Store campaigns.
@danmaas Do I understand correctly, that if one just needs SKAdNetwork data there is no need of setting any SDK flag? Thanks!
I think SKAdNetwork install events (if not purchase events) will come through automatically, without manually setting the _implicitlyLogged
flag. I'm not 100% sure through.
Same issue
Hello @danmaas , I also have the same issue here. I've follow you suggestion. But the events don't log at all even Standard and Custom Events. I've test on device iPhoneX OS 14.1.
FB SDK latest version v11.0
Noted: I've tried to test on device below iOS 14, the event was record in Analytic and Events Manager.
Anything more suggestion for this?
I'm really appreciate of your shared.
Thank you
source
exit
Same with me, anyone knows how to resolve it ?
I am also facing this issue. I have tried everything under the sun to get event to log and nothing is showing up in the events test page
Same issue, I tried on many versions of Facebook SDK and it's always the same result.. no events
Bigger picture, we're noticing that only Mobile App Install events are showing in the Ads Manager (both using the FB SDK as well as Adjust after we switched to using an MMP). Also CPMs have gone up across the board, but that seems to be a bigger problem overall due to the iOS 14 rollout
I have the same issue. The documentation says to disable this in .plist and call after initialization but it doesn't work
FBSDKSettings.setAutoLogAppEventsEnabled(true) FBSDKSettings.setAdvertiserIDCollectionEnabled(true);
but for both Xcode says "Type has no member 'setAutoLogAppEventsEnabled'"
Did someone solve the problem with IOS 14+ ? On my old iPhone 5s I received events, but on devices with iOS 14+ - no
Same issue, I tried on many versions of Facebook SDK and it's always the same result.. no events
I am using AppsFlyer and did a Facebook integration. With AppsFlyer I started getting all the events! This temporarily solves my problem for IOS 14+
Hi @danmaas and other people who may have experienced the same issue ,
setAdvertiserTrackingEnabled:YES
to send the app events and you don't need to set _implicitlyLogged
flag. If you cannot see the app events in Test Events page after you call setAdvertiserTrackingEnabled:YES
, can you double check you logged in FB App on the same device?setAdvertiserTrackingEnabled:YES
. The reason of not receiving enough App Install counts on iOS 14 ad campaigns via SKAN may be SDK not being initialized. Did you only initialize the SDK when user opt-in consent? If so, we only receive install postbacks for those opt-in users. Also, can you double check whether the App install count via SKAN is now reasonable?It'd be better if you could provide your App ID to my email kylinchang@fb.com and I can investigate deeper on the issue. Thanks!
@KylinChang Hello, o have this code for initializing FBSDK in AppDelegate:
ApplicationDelegate.shared.application(application,didFinishLaunchingWithOptions: launchOptions)
Settings.setAdvertiserTrackingEnabled(true)
Settings.isAdvertiserIDCollectionEnabled = true
After this code, in controller I call Event method :
AppEvents.logEvent(.purchased)
Also in info.plist file I have this parameters:
`
<key>FacebookDisplayName</key>
<string>AppName</string>
<key>SKAdNetworkItems</key>
<array>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>cstr6suwn9.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>v9wttpbfk9.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>n38lu8286q.skadnetwork</string>
</dict>
</array>`
What am I doing wrong?
Hi @Fublvckmagik , What's the issue you are having now, App Events not showing up in "Test Events" or SKAN install number issue? It seems that you don't call the method initializeSDK
, you will need to explicitly call initializeSDK
after v9.0.0 .
The initializeSDK
method was removed.
Hi @Fublvckmagik , What's the issue you are having now, App Events not showing up in "Test Events" or SKAN install number issue? It seems that you don't call the method
initializeSDK
, you will need to explicitly callinitializeSDK
after v9.0.0 .
Facebook don't receive my events
In Facebook documentation says that initialization happens here:
ApplicationDelegate.shared.application(application,didFinishLaunchingWithOptions: launchOptions)
Also I dint find "initializeSDK" method, just ApplicationDelegate.initialize()
Update:
ApplicationDelegate.initialize()
made Events work!!!!
Thank you
Same. It logs nothing on facebook's events test page.
Same. It logs nothing on facebook's events test page.
Don't check test page, check on Dashboard (image link)
@Fublvckmagik I haven't released new app version yet, there are lots of activity tho, how can I distinguish them.
The
initializeSDK
method was removed.
Hi @revolter , you may need to call application:didFinishLaunchingWithOptions:
of FBSDKApplicationDelegate to initialize the SDK in the latest SDK.
Same. It logs nothing on facebook's events test page.
Hi @PrimulaX , Can you please double check followings:
FBSDKSettings
's loggingBehaviors as a set of FBSDKLoggingBehaviorAppEvents, FBSDKLoggingBehaviorNetworkRequests
to check the log@kalgynirae I'm using iOS SDK wrapper for react-native but I believe I'm doing these things.
@kalgynirae I'm using iOS SDK wrapper for react-native but I believe I'm doing these things.
Thanks for the info. Are you using this library https://github.com/facebookarchive/react-native-fbsdk ?
Thanks for the info. Are you using this library https://github.com/facebookarchive/react-native-fbsdk ?
I'm using community one, react-native-fbsdk-next.
@KylinChang The same issue. Tried all the solutions above. Can it be caused by my simulator? I don't have a real iPhone device
Similar issue. I have the app for kids (com.cosmopanda.videoalphabet, if it helps) and don't want to use IDFA or pop-up windows. I use react-native-fbsdk-next and FBSDKCoreKit version is 9.3.0. What I've done:
All needed settings from react-native-fbsdk-next
Enabled SKAdNetwork in Events Manager
Steps 3 and 4 from https://developers.facebook.com/docs/ios/use-cocoapods (there is typo in docs - steps 4 and 4)
Changed my AppDelegate. There is a mix from react-native-fbsdk-next docs and facebook docs ( I can't find the page I've used)
#import <FBSDKCoreKit/FBSDKCoreKit.h>
...
(void)applicationDidBecomeActive:(UIApplication *)application { [FBSDKAppEvents activateApp]; }
(BOOL)application:(UIApplication )app openURL:(NSURL )url sourceApplication:(NSString )sourceApplication annotation:(id)annotation options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> )options { //if (![RNBranch application:app openURL:url options:options]) { // do other deep link routing for the Facebook SDK, Pinterest SDK, etc //} if ([[FBSDKApplicationDelegate sharedInstance] application:app openURL:url options:options]) { return YES; }
if ([RCTLinkingManager application:app openURL:url options:options]) { return YES; } //return YES; return [[FBSDKApplicationDelegate sharedInstance] application:app openURL:url sourceApplication:sourceApplication annotation:annotation]; }
- After initial app mount I call
FBSettings.initializeSDK(); AppEventsLogger.logEvent('test', 14, { type: 'ios' });
There is no any logs or errors about fbsdk.
I have also installed Branch to track SKAdNetwork installs.
There is no any events and installs in Events Managers and Branch.
Am I missing something?
How fast do events and installs appear? I'm trying to build with different settings for 4 days.
How to test SKAdNetwork installs correctly?
I will be very glad for any help.
@victoriaSh I have done same things and while on the test page in Event Manager logs coming from only devices with below 14 iOS versions.
Hi @PrimulaX , did you call setAdvertiserTrackingEnabled:YES
in your app?
The same issue. Tried all the solutions above. Can it be caused by my simulator? I don't have a real iPhone device
I don't think it's caused by the simulator
Similar issue. I have the app for kids (com.cosmopanda.videoalphabet, if it helps) and don't want to use IDFA or pop-up windows. I use react-native-fbsdk-next and FBSDKCoreKit version is 9.3.0. What I've done:
- All needed settings from react-native-fbsdk-next
- Enabled SKAdNetwork in Events Manager
- Steps 3 and 4 from https://developers.facebook.com/docs/ios/use-cocoapods (there is typo in docs - steps 4 and 4)
- Changed my AppDelegate. There is a mix from react-native-fbsdk-next docs and facebook docs ( I can't find the page I've used)
#import <FBSDKCoreKit/FBSDKCoreKit.h> ... - (void)applicationDidBecomeActive:(UIApplication *)application { [FBSDKAppEvents activateApp]; } - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options { //if (![RNBranch application:app openURL:url options:options]) { // do other deep link routing for the Facebook SDK, Pinterest SDK, etc //} if ([[FBSDKApplicationDelegate sharedInstance] application:app openURL:url options:options]) { return YES; } if ([RCTLinkingManager application:app openURL:url options:options]) { return YES; } //return YES; return [[FBSDKApplicationDelegate sharedInstance] application:app openURL:url sourceApplication:sourceApplication annotation:annotation]; }
- After initial app mount I call
FBSettings.initializeSDK(); AppEventsLogger.logEvent('test', 14, { type: 'ios' });
There is no any logs or errors about fbsdk. I have also installed Branch to track SKAdNetwork installs. There is no any events and installs in Events Managers and Branch.
Am I missing something? How fast do events and installs appear? I'm trying to build with different settings for 4 days. How to test SKAdNetwork installs correctly?
I will be very glad for any help.
Hi @victoriaSh , I noticed that you didn't call setAdvertiserTrackingEnabled:YES
. Starting from iOS 14.5, the default value for AdvertiserTrackingEnabled flag is false and we will drop events if the flag is false. If you want to test with "Test Events" in Events Manager, you will need IDFA attached with your events and need to log in FB App on the same device. For SKAN, it may take 2 to 3 days for SKAN install to appear and it'd be better if you could provide your FB App ID to my email so I can investigate further.
I am using FBSDKCoreKit 11.0.1, Xcode 12.5.1, Swift 5.x. I would like to track standard or custom events only, no ad for installation for now. I have added the POD to an existing prod app (now being tested) and a new basic Swift app(with AppID). I have the SDK initialization in AppDelegate and in SceneDelegate.swift. However, as others have reported, I am not seeing any AppEvents.logEvent(.viewedContent) listed from either app in the Test Events of Events Manager. How else may I troubleshoot? Thank you.
Do events tracking require the Facebook mobile app to be logged in separately from my testing apps? So I cannot test through the simulator and would need a physical iOS device. I have done that and still see no Events. My prod app has an AD ID but not my basic app. I don't think users of our prod app would necessarily have the Facebook mobile app running concurrently, as we do not use Facebook login. Or concurrent login of Facebook is only for using Test Events?
@KylinChang yes I did.
here is my code:
const ATT_CHECK = await check(PERMISSIONS.IOS.APP_TRACKING_TRANSPARENCY);
if (ATT_CHECK === RESULTS.DENIED) {
try {
const ATT = await request(PERMISSIONS.IOS.APP_TRACKING_TRANSPARENCY);
if (ATT === RESULTS.GRANTED) {
Settings.setAdvertiserTrackingEnabled(true);
}
} catch (error) {
throw error;
} finally {
Settings.initializeSDK();
}
Maybe its a problem of test events I don't know.
I found this API - https://developers.facebook.com/docs/marketing-api/app-event-api/. In section "App Installs", I submitted in macOS terminal, this curl call - curl -i -X POST "https://graph.facebook.com/{app-id}/activities
?event=MOBILE_APP_INSTALL
&application_tracking_enabled=0
&advertiser_tracking_enabled=0
&advertiser_id={advertiser-tracking-id}
&{app-access-token}" but without the app-access-token and got "success" as a JSON response. However, I don't see it listed as an Event in Facebook.com/events_manager2 for my test app. I am not sure how to construct this call in Swift.
When I try to use the Manually Log Events "Get Code" of https://developers.facebook.com/docs/app-events/getting-started-app-events-ios, I get no response clicking on the "Get Code" button in Safari, Chrome, or Firefox. Does it only work on Windows? Thank you.
I'm having the same issue as well. Tried all the above doesn't works. And still showing app is out of date, ask to update to latest Facebook SDK which I already did (SDK 11.0.1.) and waited for 1 week the message still there.
For those who have been successful in seeing their Events in Events Manager, would you mind listing where you see them - is it in https://www.facebook.com/eventmanager2 where we test our apps with Facebook SDK included?
What event works for you - Custom Event or Standard Event?
What parameters do you need to include - does it only work if you use Facebook login -> do you need to include app-access-token? Do you need to include advertiser_tracking_id ?
Has anyone tried the curl call above using app-event-api and does your event show up in "Test Events" of https://www.facebook.com/eventmanager2?
Would you mind providing your Swift code for "AppEvents.logEvent()" if you were successful?
Thank you all.
Got it to finally work by updating the FacebookClientToken in info.plist.
Weird, cause the documentation a few days ago said to replace CLIENT_TOKEN placeholder with the app name?!
In the latest documentation it says to replace with client token found in the app dashboard (which makes more sense :/).
https://developers.facebook.com/docs/app-events/getting-started-app-events-ios
Started seeing events in the test panel within minutes.
Current settings and launch call in AppDelegate:
ApplicationDelegate.shared.application(application, didFinishLaunchingWithOptions: launchOptions)
Settings.isAutoLogAppEventsEnabled = true
Settings.setAdvertiserTrackingEnabled(true)
Settings.isAdvertiserIDCollectionEnabled = false
Info.plist
<key>FacebookAdvertiserIDCollectionEnabled</key>
<false/>
<key>FacebookAppID</key>
<string>....</string>
<key>FacebookAutoLogAppEventsEnabled</key>
<true/>
<key>FacebookClientToken</key>
<string>[CLIENT-TOKEN]</string>
<---- from https://developers.facebook.com/apps/[YOUR-APP-ID]/settings/advanced/
<key>FacebookDisplayName</key>
<string>.....</string>
Hi Varun,
Your pointer on CLIENT_TOKEN is most helpful. I'm now getting better FBSKLog comments but am still not seeing event in https://www.facebook.com/eventmanager2.
Do you need to test on a physical device and not through Xcode simulator?
Are you not including the advertiser_id (Ad Account ID) and it works for you?
Thank you.
Hi @varun-s,
Does your result of event record working from real device iOS 14+? If so may you share your simple project? I've setting up the same as your mentioned above. but I didn't see any events in Test Events (https://web.facebook.com/events_manager2). One more thing by setting this Settings.isAdvertiserIDCollectionEnabled = false in Xcode console show warning as below:
@guerri-17 : I tested on a physical device. I don't think it works on the simulator (As instructions indicate that you need to be logged-in to the Facebook app too). My objective is to get app_install/automatic events so i do not need to include an advertiser_id.
@SonChanthem : I need to release another build to the app store with the new settings (Which includes the client token). I was able to get events to show up in the test panel only. Will keep you posted post release. The warning is by design. You can ignore it if you are not planning to to get user consent via ATT prompt / use IDFA.
(this is a follow-up to consolidate the main questions from #1632 and #1639)
To summarize, despite trying very hard to follow all the best practices around iOS 14 App Events and install attribution, we are still failing to get events to appear in Facebook's App Events Insights panel, and failing to attribute installs to iOS 14 campaigns in Ads Manager. We are not sure if this is a code bug, or incorrect interpretation of the documentation, or maybe an issue with Facebook's internal data systems rather than the iOS SDK.
Checklist
9.0.1
)Environment
Describe your dev environment here, giving as many details as possible. If you have them, make sure to include:
12.4
Cocoapods
version1.10.0
Goals/Expected Results
[FBSDKAppEvents logEvent]
.Note: at no point is the user signing in with a Facebook account, nor do we want to touch the IDFA at all. We only want to send what is possible without an active login session and without asking for IDFA.
(Actually, I'm afraid the docs are not very clear about whether this is even possible: can we send log events to Facebook without first asking the user to sign in, or querying the IDFA? It would be nice to clarify what data can be logged, if any, without these steps.)
Actual Results
All App Events do appear in the iOS device log, when enabled via
[FBSDKSettings enableLoggingBehavior:FBSDKLoggingBehaviorAppEvents];
. This includes both automatically-logged and manually-logged events.However, we do NOT see any events in the Events Manager Test Events panel (https://business.facebook.com/events_manager2/list/app/APPID/test_events), nor the Facebook App Insights panel (https://www.facebook.com/analytics/APPID/AppEvents/), even after 1+ days of waiting.
We can get events to appear in the Test Events panel and App Insights, but only if we do two weird things that seem to contradict the documentation:
_implicitlyLogged
flag to1
on all events. This is an internal flag that the SDK normally adds only to automatically-logged events. Since automatically-logged events were occasionally appearing on the Test Events panel, we tried adding this flag ourselves, and suddenly all the events started appearing reliably (except App Install - see 2.).fb_mobile_first_app_launch
. Even though we do set[FBSDKSettings setAutoLogAppEventsEnabled:YES]
, the SDK doesn't seem to be sending its own App Install event.With the above hacks, I think we are logging app events successfully.
However, we are doubtful that iOS 14 SKAdNetwork attribution is fully working yet, since we see far fewer App Install events in the Ads Manager interface than we would expect, relative to the number of link clicks and typical conversion rates of our campaigns. (based on historical trends, we are pretty confident that our click-to-install conversion rate should be at least 30%, but in Ads Manger we only see about 10% click-to-install on iOS 14 campaigns, which seems abnormally low).
Steps to Reproduce
Here is how we are interacting with the SDK:
Info.plist, AppDelegate.m:
After receiving user consent to share data (with explicit UI in GDPR countries, otherwise implicitly):
i.e., we want to initialize the SDK and then send as much data as we possibly can, except without touching the IDFA.
After making the above 3 calls, I would expect to see events like App Install, App Launch, and our manually-logged events to start appearing in the Events Insights panel. (on Android, using the equivalent SDK calls, they indeed do appear). Also, I would expect that we should start seeing reasonable App Install counts on iOS 14 ad campaigns via SKAdNetwork, after waiting the proper 3-day period for delayed attribution.