¿Dónde debo llamar exactamente a ?

Estoy buscando la integración de soporte para rastrear los nuevos anuncios de las aplicaciones mobilees de Facebook.

He leído el tutorial aquí: https://developers.facebook.com/docs/tutorials/mobile-app-ads/

Dice:

Incluya el siguiente código para ejecutarlo cuando su aplicación se abra por primera vez por el usuario

[FBSettings publishInstall:appId]; 

Entonces, la primera pregunta es: ¿dónde pongo esto para que solo invoque la llamada si la installation se realizó desde Facebook? No quiero que FB obtenga crédito por alguien que encontró mi aplicación en la tienda de aplicaciones.

¿Debo rastrear manualmente si he llamado a publishInstall antes para este usuario específico? (La oración del preámbulo implica esto, pero la documentation del SDK para publishInstall implica lo contrario).

Y aún más confuso es que la reference SDK FBSettings incluye shouldAutoPublishInstall que por defecto es YES . Esto sugeriría que no necesito hacer otra cosa que no sea tener el SDK integrado. Entonces, ¿por qué el tutorial no menciona esto como una opción?

Supongo que appId es la appId de Facebook asociada (en oposition a la ID de la aplicación App Store). Esto tampoco está claro en la documentation.

Navegué las fonts de facebook iOS SDK, y parece que la guía está mal.

Tiene razón, ese autoPublishInstall está establecido en YES de forma pnetworkingeterminada, lo que significa que no es necesario invocar [FBSettings publishInstall:appId]; a mano. AppId es de hecho el ID de la aplicación de Facebook.

Cuando invoca el método openActiveSessionWith.... , inicializa FBSession con initWithAppID:permissions:defaultAudience:urlSchemeSuffix:tokenCacheStrategy: que contiene al final [FBSettings autoPublishInstall:self.appID];

 + (void)autoPublishInstall:(NSString *)appID { if ([FBSettings shouldAutoPublishInstall]) { dispatch_once(&g_publishInstallOnceToken, ^{ // dispatch_once is great, but not re-entrant. Inside publishInstall we use FBRequest, which will // cause this function to get invoked a second time. By scheduling the work, we can sidestep the problem. [[FBSettings class] performSelector:@selector(publishInstall:) withObject:appID afterDelay:FBPublishDelay]; }); } } 

Por lo tanto, técnicamente debería informar la installation fuera de la caja (si no me falta algo). Voy a jugar un poco más hoy para ver si funciona como se espera y actualizo la respuesta con resultados.

  1. Simplemente póngalo en -[application:didFinishLaunchingWithOptions] .

  2. No todas las aplicaciones desean integrar el inicio de session de Facebook. Solo quieren la function "anuncios de installation de aplicaciones mobilees". Para este tipo de aplicación, deberían invocar +[FBSettings publishInstall:appId] manualmente. Por otro lado, si su aplicación ya ha integrado el inicio de session de facebook, puede suponer que el sdk de FB ha publicado la installation.

Si solo tenemos que poner

 [FBSettings publishInstall:appId]; 

manualmente en

 -[application:didFinishLaunchingWithOptions] 

¿Cómo identificaré qué installation pasó de Facebook? No quiero que FB obtenga crédito por alguien que encontró mi aplicación en la tienda de aplicaciones.

poner el código en el método Appdelegate DidbecomeActive

 - (void)applicationDidBecomeActive:(UIApplication *)application 

espero que esto ayude 🙂