ios - stories - como se llama la aplicacion de fotos que estan de moda 2018
Subiendo fotos a Instagram a través de tu propia aplicación iOS (7)
Recientemente, Instagram realizó un cambio en su política de API, lo que permitió a los desarrolladores publicar imágenes en la plataforma de Instagram a través de su propia aplicación. Varias otras técnicas que hemos empleado anteriormente para hacer esto. Uno de ellos fue invocar la aplicación de Instagram que esencialmente abriría Instagram y compartiría desde allí. Puede ver un tutorial sobre cómo se puede hacer esto aquí: Cómo compartir imágenes en Instagram desde su propia aplicación iOS
Sin embargo, existen varias aplicaciones que permiten compartir directamente a la plataforma de Instagram sin invocar la aplicación de Instagram. Oggl de Hipstamatic permite compartir directamente en Instagram sin invocar Instagram. A continuación he publicado algunas capturas de pantalla del proceso.
Una vez que tomé mi foto, Oggl me dio varias otras redes sociales en las que podría compartir mi foto. He seleccionado Facebook e Instagram.
Después de seleccionar Instagram, abrió Safari y me llevó a las siguientes dos páginas para autorizar a Oggl a publicar en Instagram. Ingresé en mis credenciales de Instagram y luego me llevó a la página de autorización.
Una vez que autoricé a Oggl, pude subir a Instagram y en unos segundos vi la foto en mi feed de noticias de Instagram. Este tipo de intercambio es muy análogo al intercambio de Facebook y Twitter. Tiene el mismo concepto. ¿Cómo se puede hacer esto? ¿Cómo se puede replicar este proceso exacto en su aplicación? Las imágenes tomadas en mi aplicación son de 612 px por 612 px , por lo que son compatibles con las dimensiones de las fotos tomadas en Instagram. Ya implementé el uso compartido en Facebook y Twitter, pero me gustaría implementar la carga en Instagram tal como lo hizo Oggl. es posible?
Hay muchos desarrolladores de iOS que pueden beneficiarse de una respuesta canónica bien detallada a esta pregunta.
Gracias
He usado el siguiente código para compartir fotos en Instagram.
NSURL *instagramURL = [NSURL URLWithString:@"instagram://app"];
if([[UIApplication sharedApplication] canOpenURL:instagramURL]) //check for App is install or not
{
NSData *imageData = UIImagePNGRepresentation(image); //convert image into .png format.
NSFileManager *fileManager = [NSFileManager defaultManager];//create instance of NSFileManager
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); //create an array and store result of our search for the documents directory in it
NSString *documentsDirectory = [paths objectAtIndex:0]; //create NSString object, that holds our exact path to the documents directory
NSString *fullPath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"insta.igo"]]; //add our image to the path
[fileManager createFileAtPath:fullPath contents:imageData attributes:nil]; //finally save the path (image)
NSLog(@"image saved");
CGRect rect = CGRectMake(0 ,0 , 0, 0);
UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, self.view.opaque, 0.0);
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIGraphicsEndImageContext();
NSString *fileNameToSave = [NSString stringWithFormat:@"Documents/insta.igo"];
NSString *jpgPath = [NSHomeDirectory() stringByAppendingPathComponent:fileNameToSave];
NSLog(@"jpg path %@",jpgPath);
NSString *newJpgPath = [NSString stringWithFormat:@"file://%@",jpgPath];
NSLog(@"with File path %@",newJpgPath);
NSURL *igImageHookFile = [[NSURL alloc]initFileURLWithPath:newJpgPath];
NSLog(@"url Path %@",igImageHookFile);
self.documentController.UTI = @"com.instagram.exclusivegram";
// self.documentController = [self setupControllerWithURL:igImageHookFile usingDelegate:self];
self.documentController=[UIDocumentInteractionController interactionControllerWithURL:igImageHookFile];
NSString *caption = @"#Your Text"; //settext as Default Caption
self.documentController.annotation=[NSDictionary dictionaryWithObjectsAndKeys:[NSString stringWithFormat:@"%@",caption],@"InstagramCaption", nil];
[self.documentController presentOpenInMenuFromRect:rect inView: self.view animated:YES];
}
else
{
UIAlertView *errMsg = [[UIAlertView alloc] initWithTitle:@"Warning" message:@"No Instagram Available" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil];
[errMsg show];
}
Hipstamatic es una de las pocas aplicaciones a las que se ha dado acceso de escritura a través de la API de Instagram.
Instagram no tiene una API pública para publicar fotos, te permite obtener sus datos pero no escribir los tuyos.
Hipstamatic y varias otras aplicaciones han negociado acuerdos especiales con Instagram que les permiten usar la API de escritura y publicar fotos directamente.
Para todos los demás desarrolladores, debe usar los enlaces de iOS para compartir con Instagram cambiando a su aplicación.
Por lo que sé, no es fácil obtener Instagram para permitirte el acceso de escritura, necesitarías tener una aplicación superior con contenido de alta calidad y ser amigable con las personas adecuadas :)
Lo que estás tratando de hacer se implementa a través de la API de Instagram http://instagram.com/developer/ . También puedes usar la aplicación de Instagram para hacer algunas acciones similares. Estos están documentados en iPhone Hooks . Si está utilizando Ruby Motion, entonces podrá utilizar el marco oficial . Desafortunadamente, no hay una API iOS de Objective-C con soporte oficial, pero hay algunas alternativas de código abierto disponibles, como NRGramKit .
La forma exacta de implementar la interacción con la API de Instagram está más allá de una respuesta de desbordamiento de pila, pero los enlaces anteriores le darán un buen punto de partida si está familiarizado con la programación de iOS.
No puedes publicar una imagen directamente en Instagram. Tienes que redirigir tu imagen con UIDocumentInteractionController. Usa el código de abajo, espero que te ayude
@property (nonatomic, retain) UIDocumentInteractionController *dic;
CGRect rect = CGRectMake(0 ,0 , 0, 0);
UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, self.view.opaque, 0.0);
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIGraphicsEndImageContext();
NSString *jpgPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/test.igo"];
NSURL *igImageHookFile = [[NSURL alloc] initWithString:[[NSString alloc] initWithFormat:@"file://%@", jpgPath]];
self.dic.UTI = @"com.instagram.photo";
self.dic = [self setupControllerWithURL:igImageHookFile usingDelegate:self];
self.dic=[UIDocumentInteractionController interactionControllerWithURL:igImageHookFile];
[self.dic presentOpenInMenuFromRect: rect inView: self.view animated: YES ];
-(UIDocumentInteractionController *) setupControllerWithURL: (NSURL*) fileURL usingDelegate: (id <UIDocumentInteractionControllerDelegate>) interactionDelegate {
UIDocumentInteractionController *interactionController = [UIDocumentInteractionController interactionControllerWithURL: fileURL];
interactionController.delegate = interactionDelegate;
return interactionController;
}
Si solo desea enviar la imagen sin recortarla, debe establecer un tamaño de imagen de 640 x 640 o el bloqueo de la aplicación.
Este es mi código rápido
var instagramURL = NSURL(string: "instagram://app")!
if UIApplication.sharedApplication().canOpenURL(instagramURL) {
var documentDirectory = NSHomeDirectory().stringByAppendingPathComponent("Documents")
var saveImagePath = documentDirectory.stringByAppendingPathComponent("Image.igo")
var imageData = UIImagePNGRepresentation(self.bestScoreShareView.takeSnapshot(W: 640, H: 640))
imageData.writeToFile(saveImagePath, atomically: true)
var imageURL = NSURL.fileURLWithPath(saveImagePath)!
docController = UIDocumentInteractionController()
docController.delegate = self
docController.UTI = "com.instagram.exclusivegram"
docController.URL = imageURL
docController.presentOpenInMenuFromRect(CGRectZero, inView: self.view, animated: true)
} else {
println("instagram not found")
}
extensión para tomar shapshot desde uiview
extension UIView {
func takeSnapshot(#W: CGFloat, H: CGFloat) -> UIImage {
var cropRect = CGRectMake(0, 0, 600, 600)
UIGraphicsBeginImageContextWithOptions(bounds.size, false, UIScreen.mainScreen().scale)
drawViewHierarchyInRect(self.bounds, afterScreenUpdates: true)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
image.imageWithNewSize(CGSizeMake(W, H))
return image
}
}
extensión para establecer el tamaño de la imagen
extension UIImage {
func imageWithNewSize(newSize:CGSize) ->UIImage {
UIGraphicsBeginImageContext(newSize)
self.drawInRect(CGRectMake(0, 0, newSize.width, newSize.height))
let newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage
}
}
También puede consultar la sección "Interacción de documentos" de la documentación de la API de Instagram para iPhone Hooks . Esto podría aprovecharse para hacer lo que está tratando de hacer y podría ser la forma en que lo hace Oggl.
textualmente de la documentación de la API de Instagram:
https://instagram.com/developer/endpoints/media/
En este momento, la carga a través de la API no es posible. Tomamos la decisión consciente de no agregar esto por las siguientes razones:
- Instagram se trata de tu vida en movimiento, esperamos animar a las fotos desde la aplicación.
- Queremos luchar contra el spam y fotos de baja calidad. Una vez que permitimos cargar desde otras fuentes, es más difícil controlar lo que entra en el ecosistema de Instagram. Dicho esto, estamos trabajando en formas de garantizar que los usuarios tengan una experiencia consistente y de alta calidad en nuestra plataforma.