ios - fbsdkcorekit - Facebook API: dónde crear instancias y cómo implementar adecuadamente handleOpenURL
install facebook sdk ios (1)
Estoy trabajando a través de la API de Facebook para mi aplicación de iPhone, y tengo dos preguntas:
Toda la documentación / ejemplos parecen poner todo en la aplicaciónDelegate: instanciar el objeto de Facebook y autorizar en appDidFinishLaunching, y anular la aplicación: método handleOpenURL.
En mi aplicación, no quiero que ocurra nada a menos que un usuario navegue a una vista específica y presiona un botón. Entiendo que desde esa perspectiva, crearé una instancia del objeto de Facebook y comenzaré la autorización en el método del controlador de botones, pero ¿qué pasa con el manejo de la anulación de la aplicación: handleOpenURL? Tendría que usar un objeto FB diferente (instanciado en mi delegado de aplicación) que el utilizado en mi controlador de vista particular.
¿Esta situación requiere un singleton? ¿O es una buena solución de diseño dejar que mi aplicación Delegar instancia el objeto FB, y acceder a ella allí donde lo necesite en mi programa?
En los documentos de FB, le dicen que anule la aplicación: método handleOpenURL:
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
return [facebook handleOpenURL:url];
}
- Tal como está escrito, ¿no significa que su aplicación solo podrá abrir un tipo de url? Si necesitas una aplicación para responder a más de una, necesitarías analizar el parámetro url para descubrir qué acción tomar, ¿corregir?
¡Gracias!
1) Ambas soluciones están bien. Pero, por supuesto, es más limpio utilizar un singleton, especialmente si tiene la intención de volver a utilizarlo en su aplicación.
2) application:handleOpenURL method:
es la forma de llamar a una aplicación externamente. FB sdk permite autenticación desde la aplicación de Facebook si está instalado o safari. Una vez autenticado, su aplicación se vuelve a llamar utilizando este controlador. Funciona de esa manera solo con dispositivos compatibles con la multitarea. Es la forma preferida de facilitar el inicio de sesión y compartir sesión. Pero no es obligatorio ... Una aplicación puede admitir varios esquemas de URL declarados en la aplicación que puede verificar (no probados, pero debería ser algo así):
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
if ([url.scheme isEqualToString:@"fb<yourid>"])
return [facebook handleOpenURL:url];
else {
// do what you want
return YES;
}
}