1023 lines
38 KiB
Plaintext
1023 lines
38 KiB
Plaintext
|
|
#if !TARGET_OS_TV
|
||
|
|
|
||
|
|
//
|
||
|
|
// SocialGate.m
|
||
|
|
// Unity-iPhone
|
||
|
|
//
|
||
|
|
// Created by lacost on 2/15/14.
|
||
|
|
//
|
||
|
|
//
|
||
|
|
|
||
|
|
#import <Foundation/Foundation.h>
|
||
|
|
#import <Accounts/Accounts.h>
|
||
|
|
#import <Social/Social.h>
|
||
|
|
#import <MessageUI/MessageUI.h>
|
||
|
|
|
||
|
|
#if UNITY_VERSION < 450
|
||
|
|
#include "iPhone_View.h"
|
||
|
|
#endif
|
||
|
|
|
||
|
|
#import "ISN_NativeCore.h"
|
||
|
|
|
||
|
|
|
||
|
|
@interface ISN_SocialGate : NSObject<MFMailComposeViewControllerDelegate>
|
||
|
|
|
||
|
|
|
||
|
|
@property (nonatomic, strong) UIDocumentInteractionController * documentInteractionController;
|
||
|
|
|
||
|
|
+ (id) sharedInstance;
|
||
|
|
|
||
|
|
- (void) twitterPost:(NSString*)status url: (NSString*) url media: (NSString*) media;
|
||
|
|
- (void) fbPost:(NSString*)status url: (NSString*) url media: (NSString*) media;
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
- (void) mediaShare:(NSString*)text media: (NSString*) media;
|
||
|
|
- (void) sendEmail:(NSString*)subject body: (NSString*) body recipients: (NSString*) recipients media: (NSString*) media;
|
||
|
|
|
||
|
|
- (void)whatsappShareText:(NSString *)msg;
|
||
|
|
- (void)whatsappShareImage:(NSString *)media;
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
@end
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
@implementation ISN_SocialGate
|
||
|
|
|
||
|
|
static ISN_SocialGate * cg_sharedInstance;
|
||
|
|
|
||
|
|
|
||
|
|
+ (id)sharedInstance {
|
||
|
|
|
||
|
|
if (cg_sharedInstance == nil) {
|
||
|
|
cg_sharedInstance = [[self alloc] init];
|
||
|
|
}
|
||
|
|
|
||
|
|
return cg_sharedInstance;
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
#define MMM_WHATSAPP_URL @"whatsapp://"
|
||
|
|
#define MMM_WHATSAPP_IMAGEFILENAME @"wa.wai"
|
||
|
|
#define MMM_WHATSAPP_IMAGEUTI @"net.whatsapp.image"
|
||
|
|
|
||
|
|
-(BOOL)whatsappInstalled{
|
||
|
|
return [[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:MMM_WHATSAPP_URL]];
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
-(void)whatsappShareText:(NSString *)msg {
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
NSString * urlWhats = [NSString stringWithFormat:@"whatsapp://send?text=%@",msg];
|
||
|
|
NSURL * whatsappURL = [NSURL URLWithString:[urlWhats stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
|
||
|
|
if ([[UIApplication sharedApplication] canOpenURL: whatsappURL]) {
|
||
|
|
[[UIApplication sharedApplication] openURL: whatsappURL];
|
||
|
|
} else {
|
||
|
|
//Probably report the errror
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
-(void)whatsappShareImage:(NSString *)media {
|
||
|
|
|
||
|
|
NSData *imageData = [[NSData alloc] initWithBase64Encoding:media];
|
||
|
|
UIImage *image = [[UIImage alloc] initWithData:imageData];
|
||
|
|
|
||
|
|
NSString *filepath=[NSTemporaryDirectory() stringByAppendingPathComponent:MMM_WHATSAPP_IMAGEFILENAME];
|
||
|
|
NSURL *fileURL = [NSURL fileURLWithPath:filepath];
|
||
|
|
|
||
|
|
// save image to path..
|
||
|
|
if([UIImagePNGRepresentation(image) writeToFile:filepath atomically:YES]){
|
||
|
|
|
||
|
|
// setup a document interaction controller with our file ..
|
||
|
|
UIDocumentInteractionController *dic = [self setupControllerWithURL:fileURL usingDelegate:nil];
|
||
|
|
self.documentInteractionController=dic;
|
||
|
|
dic.UTI = MMM_WHATSAPP_IMAGEUTI;
|
||
|
|
dic.name = MMM_WHATSAPP_IMAGEFILENAME;
|
||
|
|
|
||
|
|
dic.annotation=@{@"message":@"Test Text",@"text":@"Test Text"};
|
||
|
|
|
||
|
|
|
||
|
|
UIViewController *vc = UnityGetGLViewController();
|
||
|
|
|
||
|
|
[dic presentOpenInMenuFromRect:vc.view.bounds inView:vc.view animated:YES];
|
||
|
|
|
||
|
|
// exit; we're not calling activityDidFinish here, but later in documentInteractionControllerDidDismissOpenInMenu.
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
- (UIDocumentInteractionController *) setupControllerWithURL: (NSURL*) fileURL
|
||
|
|
usingDelegate: (id <UIDocumentInteractionControllerDelegate>) interactionDelegate {
|
||
|
|
|
||
|
|
UIDocumentInteractionController *interactionController =
|
||
|
|
[UIDocumentInteractionController interactionControllerWithURL: fileURL];
|
||
|
|
interactionController.delegate = interactionDelegate;
|
||
|
|
|
||
|
|
return interactionController;
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
-(void) mediaShare:(NSString *)text media:(NSString *)media {
|
||
|
|
[[ISN_NativeUtility sharedInstance] ISN_NativeLog: @"ISN: mediaShare"];
|
||
|
|
UIActivityViewController *controller;
|
||
|
|
|
||
|
|
|
||
|
|
if(media.length != 0) {
|
||
|
|
NSData *imageData = [[NSData alloc] initWithBase64Encoding:media];
|
||
|
|
UIImage *image = [[UIImage alloc] initWithData:imageData];
|
||
|
|
|
||
|
|
//[UIPopoverPresentationController alloc] ini
|
||
|
|
[[ISN_NativeUtility sharedInstance] ISN_NativeLog: @"ISN: image added"];
|
||
|
|
if(text.length != 0) {
|
||
|
|
[[ISN_NativeUtility sharedInstance] ISN_NativeLog: @"ISN: text added"];
|
||
|
|
controller = [[UIActivityViewController alloc] initWithActivityItems:@[text, image] applicationActivities:nil];
|
||
|
|
} else {
|
||
|
|
[[ISN_NativeUtility sharedInstance] ISN_NativeLog: @"ISN: no text"];
|
||
|
|
controller = [[UIActivityViewController alloc] initWithActivityItems:@[image] applicationActivities:nil];
|
||
|
|
}
|
||
|
|
|
||
|
|
} else {
|
||
|
|
[[ISN_NativeUtility sharedInstance] ISN_NativeLog: @"ISN: no media"];
|
||
|
|
controller = [[UIActivityViewController alloc] initWithActivityItems:@[text] applicationActivities:nil];
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
UIViewController *vc = UnityGetGLViewController();
|
||
|
|
|
||
|
|
|
||
|
|
NSArray *vComp = [[UIDevice currentDevice].systemVersion componentsSeparatedByString:@"."];
|
||
|
|
if ([[vComp objectAtIndex:0] intValue] >= 8) {
|
||
|
|
[[ISN_NativeUtility sharedInstance] ISN_NativeLog: @"ISN: iOS8 detected"];
|
||
|
|
UIPopoverPresentationController *presentationController = [controller popoverPresentationController];
|
||
|
|
presentationController.sourceView = vc.view;
|
||
|
|
}
|
||
|
|
|
||
|
|
[vc presentViewController:controller animated:YES completion:nil];
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
-(void) twitterPost:(NSString *)status url:(NSString *)url media:(NSString *)media {
|
||
|
|
[[ISN_NativeUtility sharedInstance] ISN_NativeLog: @"ISN: twitterPost"];
|
||
|
|
|
||
|
|
[SLComposeServiceViewController attemptRotationToDeviceOrientation];
|
||
|
|
SLComposeViewController *tweetSheet = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeTwitter];
|
||
|
|
|
||
|
|
if(tweetSheet == NULL) {
|
||
|
|
[[ISN_NativeUtility sharedInstance] ISN_NativeLog: @"ISN: SLServiceTypeTwitter not avaliable "];
|
||
|
|
UnitySendMessage("ShareManager", "OnTwitterPostFailed", [ISN_DataConvertor NSStringToChar:@""]);
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
if(status.length > 0) {
|
||
|
|
[tweetSheet setInitialText:status];
|
||
|
|
}
|
||
|
|
|
||
|
|
if(media.length > 0) {
|
||
|
|
NSData *imageData = [[NSData alloc] initWithBase64Encoding:media];
|
||
|
|
UIImage *image = [[UIImage alloc] initWithData:imageData];
|
||
|
|
[tweetSheet addImage:image];
|
||
|
|
}
|
||
|
|
|
||
|
|
if(url.length > 0) {
|
||
|
|
NSURL *urlObject = [NSURL URLWithString:url];
|
||
|
|
[tweetSheet addURL:urlObject];
|
||
|
|
}
|
||
|
|
|
||
|
|
UIViewController *vc = UnityGetGLViewController();
|
||
|
|
[vc presentViewController:tweetSheet animated:YES completion:nil];
|
||
|
|
|
||
|
|
tweetSheet.completionHandler = ^(SLComposeViewControllerResult result) {
|
||
|
|
NSArray *vComp;
|
||
|
|
switch(result) {
|
||
|
|
// This means the user cancelled without sending the Tweet
|
||
|
|
case SLComposeViewControllerResultCancelled:
|
||
|
|
vComp = [[UIDevice currentDevice].systemVersion componentsSeparatedByString:@"."];
|
||
|
|
if ([[vComp objectAtIndex:0] intValue] < 7) {
|
||
|
|
[tweetSheet dismissViewControllerAnimated:YES completion:nil];
|
||
|
|
}
|
||
|
|
|
||
|
|
[[ISN_NativeUtility sharedInstance] ISN_NativeLog: @"ISN: Tweet message was cancelled"];
|
||
|
|
UnitySendMessage("ShareManager", "OnTwitterPostFailed", [ISN_DataConvertor NSStringToChar:@""]);
|
||
|
|
break;
|
||
|
|
// This means the user hit 'Send'
|
||
|
|
case SLComposeViewControllerResultDone:
|
||
|
|
[[ISN_NativeUtility sharedInstance] ISN_NativeLog: @"ISN: Done pressed successfully"];
|
||
|
|
|
||
|
|
vComp = [[UIDevice currentDevice].systemVersion componentsSeparatedByString:@"."];
|
||
|
|
if ([[vComp objectAtIndex:0] intValue] < 7) {
|
||
|
|
[tweetSheet dismissViewControllerAnimated:YES completion:nil];
|
||
|
|
}
|
||
|
|
|
||
|
|
UnitySendMessage("ShareManager", "OnTwitterPostSuccess", [ISN_DataConvertor NSStringToChar:@""]);
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
};
|
||
|
|
}
|
||
|
|
|
||
|
|
- (void)twitterPostGif:(NSString *)status url:(NSString*)gifPath {
|
||
|
|
|
||
|
|
NSURL *url = [NSURL URLWithString:@"https://api.twitter.com/1.1/statuses/update_with_media.json"];
|
||
|
|
NSMutableDictionary *paramater = [[NSMutableDictionary alloc] init];
|
||
|
|
|
||
|
|
//set the parameter here. to see others acceptable parameters find it at twitter API here : http://bit.ly/Occe6R
|
||
|
|
[paramater setObject:status forKey:@"status"];
|
||
|
|
|
||
|
|
ACAccountStore *accountStore = [[ACAccountStore alloc] init];
|
||
|
|
ACAccountType *accountType = [accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierTwitter];
|
||
|
|
|
||
|
|
[accountStore requestAccessToAccountsWithType:accountType options:nil completion:^(BOOL granted, NSError *error) {
|
||
|
|
if (granted == YES) {
|
||
|
|
|
||
|
|
NSArray *accountsArray = [accountStore accountsWithAccountType:accountType];
|
||
|
|
|
||
|
|
if ([accountsArray count] > 0) {
|
||
|
|
ACAccount *twitterAccount = [accountsArray lastObject];
|
||
|
|
|
||
|
|
SLRequest *postRequest = [SLRequest requestForServiceType:SLServiceTypeTwitter requestMethod:SLRequestMethodPOST URL:url parameters:paramater];
|
||
|
|
|
||
|
|
NSData *imageData = [[NSData alloc] initWithContentsOfFile:gifPath]; // GIF89a file
|
||
|
|
|
||
|
|
|
||
|
|
[postRequest addMultipartData:imageData withName:@"media[]" type:@"image/gif" filename:@"animated.gif"];
|
||
|
|
|
||
|
|
[postRequest setAccount:twitterAccount]; // or postRequest.account = twitterAccount;
|
||
|
|
|
||
|
|
[postRequest performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) {
|
||
|
|
NSString *output = [NSString stringWithFormat:@"HTTP response status: %li", (long)[urlResponse statusCode]];
|
||
|
|
NSLog(@"output = %@",output);
|
||
|
|
dispatch_async(dispatch_get_main_queue(), ^{
|
||
|
|
|
||
|
|
});
|
||
|
|
|
||
|
|
if([urlResponse statusCode] == 200) {
|
||
|
|
UnitySendMessage("ShareManager", "OnTwitterPostSuccess", [ISN_DataConvertor NSStringToChar:@""]);
|
||
|
|
|
||
|
|
} else {
|
||
|
|
UnitySendMessage("ShareManager", "OnTwitterPostFailed", [ISN_DataConvertor NSStringToChar:@""]);
|
||
|
|
}
|
||
|
|
|
||
|
|
}];
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
}];
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
- (void) fbPost:(NSString *)status url:(NSString *)url media:(NSString *)media {
|
||
|
|
[[ISN_NativeUtility sharedInstance] ISN_NativeLog: @"ISN: fbPostWithMedia"];
|
||
|
|
|
||
|
|
[SLComposeServiceViewController attemptRotationToDeviceOrientation];
|
||
|
|
SLComposeViewController *fbSheet = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];
|
||
|
|
if(fbSheet == NULL) {
|
||
|
|
[[ISN_NativeUtility sharedInstance] ISN_NativeLog: @"ISN: SLServiceTypeFacebook not avaliable "];
|
||
|
|
UnitySendMessage("ShareManager", "OnFacebookPostFailed", [ISN_DataConvertor NSStringToChar:@""]);
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
if(status.length > 0) {
|
||
|
|
[fbSheet setInitialText:status];
|
||
|
|
}
|
||
|
|
|
||
|
|
if(media.length > 0) {
|
||
|
|
NSData *imageData = [[NSData alloc] initWithBase64Encoding:media];
|
||
|
|
UIImage *image = [[UIImage alloc] initWithData:imageData];
|
||
|
|
[fbSheet addImage:image];
|
||
|
|
}
|
||
|
|
|
||
|
|
if(url.length > 0) {
|
||
|
|
NSURL *urlObject = [NSURL URLWithString:url];
|
||
|
|
[fbSheet addURL:urlObject];
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
UIViewController *vc = UnityGetGLViewController();
|
||
|
|
|
||
|
|
[vc presentViewController:fbSheet animated:YES completion:nil];
|
||
|
|
|
||
|
|
fbSheet.completionHandler = ^(SLComposeViewControllerResult result) {
|
||
|
|
NSArray *vComp;
|
||
|
|
switch(result) {
|
||
|
|
|
||
|
|
case SLComposeViewControllerResultCancelled:
|
||
|
|
|
||
|
|
vComp = [[UIDevice currentDevice].systemVersion componentsSeparatedByString:@"."];
|
||
|
|
if ([[vComp objectAtIndex:0] intValue] < 7) {
|
||
|
|
[fbSheet dismissViewControllerAnimated:YES completion:nil];
|
||
|
|
}
|
||
|
|
|
||
|
|
[[ISN_NativeUtility sharedInstance] ISN_NativeLog: @"ISN: Tweet message was cancelled"];
|
||
|
|
UnitySendMessage("ShareManager", "OnFacebookPostFailed", [ISN_DataConvertor NSStringToChar:@""]);
|
||
|
|
break;
|
||
|
|
// This means the user hit 'Send'
|
||
|
|
case SLComposeViewControllerResultDone:
|
||
|
|
|
||
|
|
vComp = [[UIDevice currentDevice].systemVersion componentsSeparatedByString:@"."];
|
||
|
|
if ([[vComp objectAtIndex:0] intValue] < 7) {
|
||
|
|
[fbSheet dismissViewControllerAnimated:YES completion:nil];
|
||
|
|
}
|
||
|
|
|
||
|
|
[[ISN_NativeUtility sharedInstance] ISN_NativeLog: @"ISN: Done pressed successfully"];
|
||
|
|
UnitySendMessage("ShareManager", "OnFacebookPostSuccess", [ISN_DataConvertor NSStringToChar:@""]);
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
|
||
|
|
};
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
- (void) sendEmail:(NSString *)subject body:(NSString *)body recipients: (NSString*) recipients media:(NSString *)media {
|
||
|
|
[[ISN_NativeUtility sharedInstance] ISN_NativeLog: @"ISN: sendEmail"];
|
||
|
|
|
||
|
|
|
||
|
|
//Create a string with HTML formatting for the email body
|
||
|
|
NSMutableString *emailBody = [[NSMutableString alloc] initWithString:@"<html><body>"] ;
|
||
|
|
#if UNITY_VERSION < 500
|
||
|
|
[emailBody retain];
|
||
|
|
#endif
|
||
|
|
|
||
|
|
|
||
|
|
//Add some text to it however you want
|
||
|
|
[emailBody appendString:@"<p>"];
|
||
|
|
[emailBody appendString:body];
|
||
|
|
[emailBody appendString:@"</p>"];
|
||
|
|
|
||
|
|
|
||
|
|
/*
|
||
|
|
if(media.length > 0) {
|
||
|
|
// NSLog(@"media: %@",media);
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
[emailBody appendString:[NSString stringWithFormat:@"<p><b><img src='data:image/png;base64,%@'></b></p>",media]];
|
||
|
|
}
|
||
|
|
*/
|
||
|
|
|
||
|
|
|
||
|
|
//close the HTML formatting
|
||
|
|
[emailBody appendString:@"</body></html>"];
|
||
|
|
// NSLog(@"emailBody: %@",emailBody);
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
//Create the mail composer window
|
||
|
|
MFMailComposeViewController *emailDialog = [[MFMailComposeViewController alloc] init];
|
||
|
|
|
||
|
|
if(emailDialog == nil) {
|
||
|
|
UnitySendMessage("ShareManager", "OnMailFailed", [ISN_DataConvertor NSStringToChar:@""]);
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
emailDialog.mailComposeDelegate = self;
|
||
|
|
[emailDialog setSubject:subject];
|
||
|
|
[emailDialog setMessageBody:emailBody isHTML:YES];
|
||
|
|
|
||
|
|
if(media.length > 0) {
|
||
|
|
NSData *imageData = [[NSData alloc] initWithBase64Encoding:media];
|
||
|
|
[emailDialog addAttachmentData:imageData mimeType:@"image/png" fileName:@"Attachment"];
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
NSArray *emails = [recipients componentsSeparatedByString:@","];
|
||
|
|
|
||
|
|
[emailDialog setToRecipients:emails];
|
||
|
|
|
||
|
|
|
||
|
|
UIViewController *vc = UnityGetGLViewController();
|
||
|
|
|
||
|
|
[vc presentViewController:emailDialog animated:YES completion:nil];
|
||
|
|
#if UNITY_VERSION < 500
|
||
|
|
[emailDialog release];
|
||
|
|
[emailBody release];
|
||
|
|
#endif
|
||
|
|
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
#pragma private
|
||
|
|
|
||
|
|
- (NSString*) photoFilePath {
|
||
|
|
return [NSString stringWithFormat:@"%@/%@",[NSHomeDirectory() stringByAppendingPathComponent:@"Documents"],@"tempinstgramphoto.igo"];
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
- (void) mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error {
|
||
|
|
switch (result)
|
||
|
|
{
|
||
|
|
case MFMailComposeResultCancelled:
|
||
|
|
UnitySendMessage("ShareManager", "OnMailFailed", [ISN_DataConvertor NSStringToChar:@""]);
|
||
|
|
[[ISN_NativeUtility sharedInstance] ISN_NativeLog: @"ISN: Mail cancelled"];
|
||
|
|
break;
|
||
|
|
case MFMailComposeResultSaved:
|
||
|
|
UnitySendMessage("ShareManager", "OnMailFailed", [ISN_DataConvertor NSStringToChar:@""]);
|
||
|
|
[[ISN_NativeUtility sharedInstance] ISN_NativeLog: @"ISN: Mail saved"];
|
||
|
|
break;
|
||
|
|
case MFMailComposeResultSent:
|
||
|
|
UnitySendMessage("ShareManager", "OnMailSuccess", [ISN_DataConvertor NSStringToChar:@""]);
|
||
|
|
[[ISN_NativeUtility sharedInstance] ISN_NativeLog: @"ISN: Mail sent"];
|
||
|
|
break;
|
||
|
|
case MFMailComposeResultFailed:
|
||
|
|
UnitySendMessage("ShareManager", "OnMailFailed", [ISN_DataConvertor NSStringToChar:@""]);
|
||
|
|
[[ISN_NativeUtility sharedInstance] ISN_NativeLog: @"ISN: Mail sent failure: %@", [error localizedDescription]];
|
||
|
|
break;
|
||
|
|
default:
|
||
|
|
UnitySendMessage("ShareManager", "OnMailFailed", [ISN_DataConvertor NSStringToChar:@""]);
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
|
||
|
|
UIViewController *vc = UnityGetGLViewController();
|
||
|
|
[vc dismissViewControllerAnimated:YES completion:NULL];
|
||
|
|
}
|
||
|
|
@end
|
||
|
|
|
||
|
|
|
||
|
|
@interface IOSInstaPlugin : NSObject<UIDocumentInteractionControllerDelegate>
|
||
|
|
|
||
|
|
+ (id) sharedInstance;
|
||
|
|
|
||
|
|
- (void) share:(NSString*)status media: (NSString*) media;
|
||
|
|
|
||
|
|
|
||
|
|
@end
|
||
|
|
|
||
|
|
|
||
|
|
@interface MGInstagram : NSObject <UIDocumentInteractionControllerDelegate>
|
||
|
|
|
||
|
|
extern NSString* const kInstagramAppURLString;
|
||
|
|
extern NSString* const kInstagramOnlyPhotoFileName;
|
||
|
|
|
||
|
|
//DEFAULT file name is kInstagramDefualtPhotoFileName
|
||
|
|
//DEFAULT file name is restricted to only the instagram app
|
||
|
|
//Make sure your photoFileName has a valid photo extension.
|
||
|
|
+ (void) setPhotoFileName:(NSString*)fileName;
|
||
|
|
+ (NSString*) photoFileName;
|
||
|
|
|
||
|
|
//checks to see if user has instagram installed on device
|
||
|
|
+ (BOOL) isAppInstalled;
|
||
|
|
|
||
|
|
//checks to see if image is large enough to be posted by instagram
|
||
|
|
//returns NO if image dimensions are under 612x612
|
||
|
|
//
|
||
|
|
//Technically the instagram allows for photos to be published under the size of 612x612
|
||
|
|
//BUT if you want nice quality pictures, I recommend checking the image size.
|
||
|
|
+ (BOOL) isImageCorrectSize:(UIImage*)image;
|
||
|
|
|
||
|
|
//post image to instagram by passing in the target image and
|
||
|
|
//the view in which the user will be presented with the instagram model
|
||
|
|
+ (void) postImage:(UIImage*)image inView:(UIView*)view;
|
||
|
|
//Same as above method but with the option for a photo caption
|
||
|
|
+ (void) postImage:(UIImage*)image withCaption:(NSString*)caption inView:(UIView*)view;
|
||
|
|
+ (void) postImage:(UIImage*)image withCaption:(NSString*)caption inView:(UIView*)view delegate:(id<UIDocumentInteractionControllerDelegate>)delegate;
|
||
|
|
|
||
|
|
@end
|
||
|
|
|
||
|
|
|
||
|
|
@interface IOSTwitterPlugin : NSObject
|
||
|
|
|
||
|
|
+ (id) sharedInstance;
|
||
|
|
|
||
|
|
- (void) initTwitterPlugin;
|
||
|
|
- (void) authificateUser;
|
||
|
|
- (void) loadUserData;
|
||
|
|
- (void) post:(NSString*)status;
|
||
|
|
- (void) postWithMedia:(NSString*)status media: (NSString*) media;
|
||
|
|
|
||
|
|
|
||
|
|
@end
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
@implementation IOSInstaPlugin
|
||
|
|
|
||
|
|
static IOSInstaPlugin *_sharedInstance;
|
||
|
|
|
||
|
|
|
||
|
|
+ (id)sharedInstance {
|
||
|
|
|
||
|
|
if (_sharedInstance == nil) {
|
||
|
|
_sharedInstance = [[self alloc] init];
|
||
|
|
}
|
||
|
|
|
||
|
|
return _sharedInstance;
|
||
|
|
}
|
||
|
|
-(void) share:(NSString *)status media:(NSString *)media {
|
||
|
|
[[ISN_NativeUtility sharedInstance] ISN_NativeLog: @"Insta share"];
|
||
|
|
|
||
|
|
NSData *imageData = [[NSData alloc] initWithBase64Encoding:media];
|
||
|
|
UIImage *image = [[UIImage alloc] initWithData:imageData];
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
if ([[[UIDevice currentDevice] systemVersion] floatValue] < 5.0) {
|
||
|
|
float i = [[[UIDevice currentDevice] systemVersion] floatValue];
|
||
|
|
NSString *str = [NSString stringWithFormat:@"We're sorry, but Instagram is not supported with your iOS %.1f version.", i];
|
||
|
|
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Message" message:str delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
|
||
|
|
[alert show];
|
||
|
|
|
||
|
|
UnitySendMessage("IOSInstagramManager", "OnInstaPostFailed", [ISN_DataConvertor NSStringToChar:@"3"]);
|
||
|
|
UnitySendMessage("ShareManager", "OnInstaPostFailed", [ISN_DataConvertor NSStringToChar:@"3"]);
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
} else {
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
if ([MGInstagram isAppInstalled]) {
|
||
|
|
UIViewController *vc = UnityGetGLViewController();
|
||
|
|
[MGInstagram postImage:image withCaption:status inView:vc.view delegate:self];
|
||
|
|
} else {
|
||
|
|
UnitySendMessage("IOSInstagramManager", "OnInstaPostFailed", [ISN_DataConvertor NSStringToChar:@"1"]);
|
||
|
|
UnitySendMessage("ShareManager", "OnInstaPostFailed", [ISN_DataConvertor NSStringToChar:@"1"]);
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
- (void)documentInteractionControllerDidDismissOpenInMenu:(UIDocumentInteractionController *)controller {
|
||
|
|
[[ISN_NativeUtility sharedInstance] ISN_NativeLog: @"documentInteractionControllerDidDismissOpenInMenu"];
|
||
|
|
UnitySendMessage("IOSInstagramManager", "OnInstaPostFailed", [ISN_DataConvertor NSStringToChar:@"2"]);
|
||
|
|
UnitySendMessage("ShareManager", "OnInstaPostFailed", [ISN_DataConvertor NSStringToChar:@"2"]);
|
||
|
|
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
- (void) documentInteractionController: (UIDocumentInteractionController *) controller willBeginSendingToApplication: (NSString *) application {
|
||
|
|
[[ISN_NativeUtility sharedInstance] ISN_NativeLog: @"willBeginSendingToApplication"];
|
||
|
|
UnitySendMessage("IOSInstagramManager", "OnInstaPostSuccess", [ISN_DataConvertor NSStringToChar:@""]);
|
||
|
|
UnitySendMessage("ShareManager", "OnInstaPostSuccess", [ISN_DataConvertor NSStringToChar:@""]);
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
@end
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
@interface MGInstagram () {
|
||
|
|
UIDocumentInteractionController *documentInteractionController;
|
||
|
|
}
|
||
|
|
|
||
|
|
@property (nonatomic) NSString *photoFileName;
|
||
|
|
|
||
|
|
@end
|
||
|
|
|
||
|
|
@implementation MGInstagram
|
||
|
|
|
||
|
|
NSString* const kInstagramAppURLString = @"instagram://app";
|
||
|
|
NSString* const kInstagramOnlyPhotoFileName = @"tempinstgramphoto.igo";
|
||
|
|
|
||
|
|
+ (instancetype) sharedInstance
|
||
|
|
{
|
||
|
|
static MGInstagram* sharedInstance = nil;
|
||
|
|
static dispatch_once_t onceToken;
|
||
|
|
dispatch_once(&onceToken, ^{
|
||
|
|
sharedInstance = [[MGInstagram alloc] init];
|
||
|
|
});
|
||
|
|
return sharedInstance;
|
||
|
|
}
|
||
|
|
|
||
|
|
- (id) init {
|
||
|
|
if (self = [super init]) {
|
||
|
|
self.photoFileName = kInstagramOnlyPhotoFileName;
|
||
|
|
}
|
||
|
|
return self;
|
||
|
|
}
|
||
|
|
|
||
|
|
+ (void) setPhotoFileName:(NSString*)fileName {
|
||
|
|
[MGInstagram sharedInstance].photoFileName = fileName;
|
||
|
|
}
|
||
|
|
+ (NSString*) photoFileName {
|
||
|
|
return [MGInstagram sharedInstance].photoFileName;
|
||
|
|
}
|
||
|
|
|
||
|
|
+ (BOOL) isAppInstalled {
|
||
|
|
NSURL *appURL = [NSURL URLWithString:kInstagramAppURLString];
|
||
|
|
return [[UIApplication sharedApplication] canOpenURL:appURL];
|
||
|
|
}
|
||
|
|
|
||
|
|
//Technically the instagram allows for photos to be published under the size of 612x612
|
||
|
|
//BUT if you want nice quality pictures, I recommend checking the image size.
|
||
|
|
+ (BOOL) isImageCorrectSize:(UIImage*)image {
|
||
|
|
CGImageRef cgImage = [image CGImage];
|
||
|
|
return (CGImageGetWidth(cgImage) >= 612 && CGImageGetHeight(cgImage) >= 612);
|
||
|
|
}
|
||
|
|
|
||
|
|
- (NSString*) photoFilePath {
|
||
|
|
return [NSString stringWithFormat:@"%@/%@",[NSHomeDirectory() stringByAppendingPathComponent:@"Documents"],self.photoFileName];
|
||
|
|
}
|
||
|
|
|
||
|
|
+ (void) postImage:(UIImage*)image inView:(UIView*)view {
|
||
|
|
[self postImage:image withCaption:nil inView:view];
|
||
|
|
}
|
||
|
|
+ (void) postImage:(UIImage*)image withCaption:(NSString*)caption inView:(UIView*)view {
|
||
|
|
[self postImage:image withCaption:caption inView:view delegate:nil];
|
||
|
|
}
|
||
|
|
|
||
|
|
+ (void) postImage:(UIImage*)image withCaption:(NSString*)caption inView:(UIView*)view delegate:(id<UIDocumentInteractionControllerDelegate>)delegate {
|
||
|
|
[[MGInstagram sharedInstance] postImage:image withCaption:caption inView:view delegate:delegate];
|
||
|
|
}
|
||
|
|
|
||
|
|
- (void) postImage:(UIImage*)image withCaption:(NSString*)caption inView:(UIView*)view delegate:(id<UIDocumentInteractionControllerDelegate>)delegate
|
||
|
|
{
|
||
|
|
if (!image)
|
||
|
|
[NSException raise:NSInternalInconsistencyException format:@"Image cannot be nil!"];
|
||
|
|
|
||
|
|
[UIImageJPEGRepresentation(image, 1.0) writeToFile:[self photoFilePath] atomically:YES];
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
NSURL *fileURL = [NSURL fileURLWithPath:[self photoFilePath]];
|
||
|
|
documentInteractionController = [UIDocumentInteractionController interactionControllerWithURL:fileURL];
|
||
|
|
#if UNITY_VERSION < 500
|
||
|
|
[documentInteractionController retain];
|
||
|
|
#endif
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
documentInteractionController.UTI = @"com.instagram.exclusivegram";
|
||
|
|
documentInteractionController.delegate = delegate;
|
||
|
|
if (caption)
|
||
|
|
documentInteractionController.annotation = [NSDictionary dictionaryWithObject:caption forKey:@"InstagramCaption"];
|
||
|
|
|
||
|
|
[documentInteractionController presentOpenInMenuFromRect:CGRectZero inView:view animated:YES];
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
@end
|
||
|
|
|
||
|
|
|
||
|
|
@implementation IOSTwitterPlugin
|
||
|
|
|
||
|
|
|
||
|
|
static IOSTwitterPlugin * itp_sharedInstance;
|
||
|
|
|
||
|
|
|
||
|
|
+ (id)sharedInstance {
|
||
|
|
|
||
|
|
if (itp_sharedInstance == nil) {
|
||
|
|
itp_sharedInstance = [[self alloc] init];
|
||
|
|
}
|
||
|
|
|
||
|
|
return itp_sharedInstance;
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
- (void) initTwitterPlugin {
|
||
|
|
[[ISN_NativeUtility sharedInstance] ISN_NativeLog: @"MSP: Twitter init"];
|
||
|
|
|
||
|
|
NSString * status = @"0";
|
||
|
|
|
||
|
|
if([self IsTwitterAvaliable]) {
|
||
|
|
if([self IsTwitterAuthed]) {
|
||
|
|
status = @"1";
|
||
|
|
}
|
||
|
|
}
|
||
|
|
[[ISN_NativeUtility sharedInstance] ISN_NativeLog: @"MSP: Status init %@", status];
|
||
|
|
UnitySendMessage("IOSTwitterManager", "OnInited", [ISN_DataConvertor NSStringToChar:status]);
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
-(void) authificateUser {
|
||
|
|
[[ISN_NativeUtility sharedInstance] ISN_NativeLog: @"MSP: authificateUser"];
|
||
|
|
ACAccountStore *account = [[ACAccountStore alloc] init];
|
||
|
|
ACAccountType *twitterAccountType = [account accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierTwitter];
|
||
|
|
|
||
|
|
[account requestAccessToAccountsWithType:twitterAccountType options:NULL completion:^(BOOL granted, NSError *error) {
|
||
|
|
if (granted) {
|
||
|
|
NSArray *twitterAccounts = [account accountsWithAccountType:twitterAccountType];
|
||
|
|
if ([twitterAccounts count] > 0) {
|
||
|
|
[[ISN_NativeUtility sharedInstance] ISN_NativeLog: @"MSP: OnAuthSuccess"];
|
||
|
|
UnitySendMessage("IOSTwitterManager", "OnAuthSuccess", [ISN_DataConvertor NSStringToChar:@""]);
|
||
|
|
|
||
|
|
} else {
|
||
|
|
[[ISN_NativeUtility sharedInstance] ISN_NativeLog: @"MSP: OnAuthFailed no aacounts"];
|
||
|
|
UnitySendMessage("IOSTwitterManager", "OnAuthFailed", [ISN_DataConvertor NSStringToChar:@"0"]);
|
||
|
|
}
|
||
|
|
|
||
|
|
} else {
|
||
|
|
[[ISN_NativeUtility sharedInstance] ISN_NativeLog: @"MSP: OnAuthFailed no accses"];
|
||
|
|
UnitySendMessage("IOSTwitterManager", "OnAuthFailed", [ISN_DataConvertor NSStringToChar:@"1"]);
|
||
|
|
}
|
||
|
|
}];
|
||
|
|
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
-(void) loadUserData {
|
||
|
|
[[ISN_NativeUtility sharedInstance] ISN_NativeLog: @"MSP: loadUserData"];
|
||
|
|
ACAccountStore *account = [[ACAccountStore alloc] init];
|
||
|
|
ACAccountType *twitterAccountType = [account accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierTwitter];
|
||
|
|
|
||
|
|
[account requestAccessToAccountsWithType:twitterAccountType options:NULL completion:^(BOOL granted, NSError *error) {
|
||
|
|
if (granted) {
|
||
|
|
NSArray *twitterAccounts = [account accountsWithAccountType:twitterAccountType];
|
||
|
|
if ([twitterAccounts count] > 0) {
|
||
|
|
ACAccount *twitterAccount = [twitterAccounts objectAtIndex:0];
|
||
|
|
|
||
|
|
// Creating a request to get the info about a user on Twitter
|
||
|
|
[[ISN_NativeUtility sharedInstance] ISN_NativeLog: @"MSP: Using twitter acc with name: %@", twitterAccount.username];
|
||
|
|
|
||
|
|
SLRequest *twitterInfoRequest = [SLRequest requestForServiceType:SLServiceTypeTwitter requestMethod:SLRequestMethodGET URL:[NSURL URLWithString:@"https://api.twitter.com/1.1/users/show.json"] parameters:[NSDictionary dictionaryWithObject:twitterAccount.username forKey:@"screen_name"]];
|
||
|
|
[twitterInfoRequest setAccount:twitterAccount];
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
// Making the request
|
||
|
|
[twitterInfoRequest performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) {
|
||
|
|
dispatch_async(dispatch_get_main_queue(), ^{
|
||
|
|
[[ISN_NativeUtility sharedInstance] ISN_NativeLog: @"MSP: twitterInfoRequest finished"];
|
||
|
|
|
||
|
|
|
||
|
|
// Check if we reached the reate limit
|
||
|
|
if ([urlResponse statusCode] == 429) {
|
||
|
|
[[ISN_NativeUtility sharedInstance] ISN_NativeLog: @"MSP: Rate limit reached"];
|
||
|
|
UnitySendMessage("IOSTwitterManager", "OnUserDataLoadFailed", [ISN_DataConvertor NSStringToChar:@""]);
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
// Check if there was an error
|
||
|
|
if (error) {
|
||
|
|
[[ISN_NativeUtility sharedInstance] ISN_NativeLog: @"MSP: Error: %@", error.localizedDescription];
|
||
|
|
UnitySendMessage("IOSTwitterManager", "OnUserDataLoadFailed", [ISN_DataConvertor NSStringToChar:@""]);
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
// Check if there is some response data
|
||
|
|
if (responseData) {
|
||
|
|
NSString *resp = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
|
||
|
|
[[ISN_NativeUtility sharedInstance] ISN_NativeLog: @"MSP: Request Succsesful: %@", resp];
|
||
|
|
|
||
|
|
UnitySendMessage("IOSTwitterManager", "OnUserDataLoaded", [ISN_DataConvertor NSStringToChar:resp]);
|
||
|
|
|
||
|
|
|
||
|
|
} else {
|
||
|
|
[[ISN_NativeUtility sharedInstance] ISN_NativeLog: @"MSP: No respoce data founded"];
|
||
|
|
|
||
|
|
UnitySendMessage("IOSTwitterManager", "OnUserDataLoadFailed", [ISN_DataConvertor NSStringToChar:@""]);
|
||
|
|
}
|
||
|
|
});
|
||
|
|
}];
|
||
|
|
|
||
|
|
|
||
|
|
} else {
|
||
|
|
[[ISN_NativeUtility sharedInstance] ISN_NativeLog: @"MSP: OnUserDataLoadFailed no accounts founded"];
|
||
|
|
UnitySendMessage("IOSTwitterManager", "OnUserDataLoadFailed", [ISN_DataConvertor NSStringToChar:@""]);
|
||
|
|
}
|
||
|
|
|
||
|
|
} else {
|
||
|
|
[[ISN_NativeUtility sharedInstance] ISN_NativeLog: @"MSP: OnUserDataLoadFailed no access"];
|
||
|
|
UnitySendMessage("IOSTwitterManager", "OnUserDataLoadFailed", [ISN_DataConvertor NSStringToChar:@""]);
|
||
|
|
}
|
||
|
|
}];
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
-(void) postWithMedia:(NSString *)status media:(NSString *)media {
|
||
|
|
[[ISN_NativeUtility sharedInstance] ISN_NativeLog: @"postWithMedia"];
|
||
|
|
|
||
|
|
NSData *imageData = [[NSData alloc] initWithBase64Encoding:media];
|
||
|
|
UIImage *image = [[UIImage alloc] initWithData:imageData];
|
||
|
|
|
||
|
|
SLComposeViewController *tweetSheet = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeTwitter];
|
||
|
|
[tweetSheet setInitialText:status];
|
||
|
|
[tweetSheet addImage:image];
|
||
|
|
|
||
|
|
UIViewController *vc = UnityGetGLViewController();
|
||
|
|
|
||
|
|
[vc presentViewController:tweetSheet animated:YES completion:nil];
|
||
|
|
|
||
|
|
tweetSheet.completionHandler = ^(SLComposeViewControllerResult result) {
|
||
|
|
switch(result) {
|
||
|
|
// This means the user cancelled without sending the Tweet
|
||
|
|
case SLComposeViewControllerResultCancelled:
|
||
|
|
[[ISN_NativeUtility sharedInstance] ISN_NativeLog: @"Tweet message was cancelled"];
|
||
|
|
UnitySendMessage("IOSTwitterManager", "OnPostFailed", [ISN_DataConvertor NSStringToChar:@""]);
|
||
|
|
[tweetSheet dismissViewControllerAnimated:YES completion:nil];
|
||
|
|
break;
|
||
|
|
// This means the user hit 'Send'
|
||
|
|
case SLComposeViewControllerResultDone:
|
||
|
|
[[ISN_NativeUtility sharedInstance] ISN_NativeLog: @"Done pressed successfully"];
|
||
|
|
UnitySendMessage("IOSTwitterManager", "OnPostSuccess", [ISN_DataConvertor NSStringToChar:@""]);
|
||
|
|
[tweetSheet dismissViewControllerAnimated:YES completion:nil];
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
};
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
- (void) post:(NSString *)status {
|
||
|
|
|
||
|
|
SLComposeViewController *tweetSheet = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeTwitter];
|
||
|
|
[tweetSheet setInitialText:status];
|
||
|
|
|
||
|
|
|
||
|
|
UIViewController *vc = UnityGetGLViewController();
|
||
|
|
|
||
|
|
[vc presentViewController:tweetSheet animated:YES completion:nil];
|
||
|
|
|
||
|
|
tweetSheet.completionHandler = ^(SLComposeViewControllerResult result) {
|
||
|
|
switch(result) {
|
||
|
|
// This means the user cancelled without sending the Tweet
|
||
|
|
case SLComposeViewControllerResultCancelled:
|
||
|
|
[[ISN_NativeUtility sharedInstance] ISN_NativeLog: @"Tweet message was cancelled"];
|
||
|
|
|
||
|
|
UnitySendMessage("IOSTwitterManager", "OnPostFailed", [ISN_DataConvertor NSStringToChar:@""]);
|
||
|
|
[tweetSheet dismissViewControllerAnimated:YES completion:nil];
|
||
|
|
break;
|
||
|
|
// This means the user hit 'Send'
|
||
|
|
case SLComposeViewControllerResultDone:
|
||
|
|
[[ISN_NativeUtility sharedInstance] ISN_NativeLog: @"Done pressed successfully"];
|
||
|
|
UnitySendMessage("IOSTwitterManager", "OnPostSuccess", [ISN_DataConvertor NSStringToChar:@""]);
|
||
|
|
[tweetSheet dismissViewControllerAnimated:YES completion:nil];
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
};
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
-(BOOL) IsTwitterAvaliable {
|
||
|
|
return [SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter];
|
||
|
|
}
|
||
|
|
|
||
|
|
-(BOOL) IsTwitterAuthed {
|
||
|
|
ACAccountStore *account = [[ACAccountStore alloc] init];
|
||
|
|
ACAccountType *twitterAccountType = [account accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierTwitter];
|
||
|
|
|
||
|
|
NSArray *twitterAccounts = [account accountsWithAccountType:twitterAccountType];
|
||
|
|
|
||
|
|
if(twitterAccounts.count > 0) {
|
||
|
|
return true;
|
||
|
|
} else {
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
@end
|
||
|
|
|
||
|
|
|
||
|
|
extern "C" {
|
||
|
|
|
||
|
|
|
||
|
|
//--------------------------------------
|
||
|
|
// IOS Plugin Section
|
||
|
|
//--------------------------------------
|
||
|
|
|
||
|
|
|
||
|
|
void _ISN_TwPost(char* text, char* url, char* encodedMedia) {
|
||
|
|
[[ISN_SocialGate sharedInstance] twitterPost:[ISN_DataConvertor charToNSString:text] url:[ISN_DataConvertor charToNSString:url] media:[ISN_DataConvertor charToNSString:encodedMedia]];
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
void _ISN_TwPostGIF(char* text, char* url) {
|
||
|
|
[[ISN_SocialGate sharedInstance] twitterPostGif:[ISN_DataConvertor charToNSString:text] url:[ISN_DataConvertor charToNSString:url]];
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
void _ISN_FbPost(char* text, char* url, char* encodedMedia) {
|
||
|
|
[[ISN_SocialGate sharedInstance] fbPost:[ISN_DataConvertor charToNSString:text] url:[ISN_DataConvertor charToNSString:url] media:[ISN_DataConvertor charToNSString:encodedMedia]];
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
void _ISN_MediaShare(char* text, char* encodedMedia) {
|
||
|
|
NSString *status = [ISN_DataConvertor charToNSString:text];
|
||
|
|
NSString *media = [ISN_DataConvertor charToNSString:encodedMedia];
|
||
|
|
|
||
|
|
[[ISN_SocialGate sharedInstance] mediaShare:status media:media];
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
void _ISN_SendMail(char* subject, char* body, char* recipients, char* encodedMedia) {
|
||
|
|
NSString *mailSubject = [ISN_DataConvertor charToNSString:subject];
|
||
|
|
NSString *mailBody = [ISN_DataConvertor charToNSString:body];
|
||
|
|
NSString *mailRecipients = [ISN_DataConvertor charToNSString:recipients];
|
||
|
|
NSString *media = [ISN_DataConvertor charToNSString:encodedMedia];
|
||
|
|
|
||
|
|
|
||
|
|
[[ISN_SocialGate sharedInstance] sendEmail:mailSubject body:mailBody recipients:mailRecipients media:media];
|
||
|
|
}
|
||
|
|
|
||
|
|
void _ISN_WP_ShareText(char* text) {
|
||
|
|
NSString *msg = [ISN_DataConvertor charToNSString:text];
|
||
|
|
[[ISN_SocialGate sharedInstance] whatsappShareText:msg];
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
void _ISN_WP_ShareMedia(char* encodedMedia) {
|
||
|
|
NSString *media = [ISN_DataConvertor charToNSString:encodedMedia];
|
||
|
|
[[ISN_SocialGate sharedInstance] whatsappShareImage:media];
|
||
|
|
}
|
||
|
|
|
||
|
|
//--------------------------------------
|
||
|
|
// Mobile Social Plugin Section
|
||
|
|
//--------------------------------------
|
||
|
|
|
||
|
|
void _MSP_TwPost(char* text, char* url, char* encodedMedia) {
|
||
|
|
_ISN_TwPost(text, url, encodedMedia);
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
void _MSP_FbPost(char* text, char* url, char* encodedMedia) {
|
||
|
|
_ISN_FbPost(text, url, encodedMedia);
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
void _MSP_MediaShare(char* text, char* encodedMedia) {
|
||
|
|
_ISN_MediaShare(text, encodedMedia);
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
void _MSP_SendMail(char* subject, char* body, char* recipients, char* encodedMedia) {
|
||
|
|
_ISN_SendMail(subject, body, recipients, encodedMedia);
|
||
|
|
}
|
||
|
|
|
||
|
|
//--------------------------------------
|
||
|
|
// Mobile Social Plugin Instagram
|
||
|
|
//--------------------------------------
|
||
|
|
|
||
|
|
void _ISN_InstaShare(char* encodedMedia, char* text) {
|
||
|
|
|
||
|
|
NSString *status = [ISN_DataConvertor charToNSString:text];
|
||
|
|
NSString *media = [ISN_DataConvertor charToNSString:encodedMedia];
|
||
|
|
|
||
|
|
[[IOSInstaPlugin sharedInstance] share:status media:media];
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
void _MSP_InstaShare(char* encodedMedia, char* text) {
|
||
|
|
_ISN_InstaShare(encodedMedia, text);
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
//--------------------------------------
|
||
|
|
// Mobile Social Plugin Twitter
|
||
|
|
//--------------------------------------
|
||
|
|
|
||
|
|
|
||
|
|
void _twitterInit () {
|
||
|
|
[[IOSTwitterPlugin sharedInstance] initTwitterPlugin];
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
void _twitterLoadUserData() {
|
||
|
|
[[IOSTwitterPlugin sharedInstance] loadUserData];
|
||
|
|
}
|
||
|
|
|
||
|
|
void _twitterAuthificateUser() {
|
||
|
|
[[IOSTwitterPlugin sharedInstance] authificateUser];
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
void _twitterPost(char* text) {
|
||
|
|
NSString *status = [ISN_DataConvertor charToNSString:text];
|
||
|
|
[[IOSTwitterPlugin sharedInstance] post:status];
|
||
|
|
}
|
||
|
|
|
||
|
|
void _twitterPostWithMedia(char* text, char* encodedMedia) {
|
||
|
|
|
||
|
|
NSString *status = [ISN_DataConvertor charToNSString:text];
|
||
|
|
NSString *media = [ISN_DataConvertor charToNSString:encodedMedia];
|
||
|
|
|
||
|
|
[[IOSTwitterPlugin sharedInstance] postWithMedia:status media:media];
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
#endif
|
||
|
|
|