123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 |
- /****************************************************************************
- Copyright (c) 2013 cocos2d-x.org
-
- http://www.cocos2d-x.org
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
- ****************************************************************************/
- #import "ShareTwitter.h"
- #import "FHSTwitterEngine.h"
- #import "ShareWrapper.h"
- #define OUTPUT_LOG(...) if (self.debug) NSLog(__VA_ARGS__);
- @implementation ShareTwitter
- @synthesize mShareInfo;
- @synthesize debug = __debug;
- - (void) configDeveloperInfo : (NSMutableDictionary*) cpInfo
- {
- NSString* appKey = [cpInfo objectForKey:@"TwitterKey"];
- NSString* appSecret = [cpInfo objectForKey:@"TwitterSecret"];
- if (nil == appKey || nil == appSecret) {
- return;
- }
- [[FHSTwitterEngine sharedEngine]permanentlySetConsumerKey:appKey andSecret:appSecret];
- }
- - (void) share: (NSMutableDictionary*) shareInfo
- {
- self.mShareInfo = shareInfo;
- if ([[FHSTwitterEngine sharedEngine]isAuthorized])
- {
- [self doShare];
- } else {
- UIViewController* controller = [self getCurrentRootViewController];
- [[FHSTwitterEngine sharedEngine]showOAuthLoginControllerFromViewController:controller withCompletion:^(BOOL success) {
- if (success) {
- [self doShare];
- } else {
- [ShareWrapper onShareResult:self withRet:kShareFail withMsg:@"Login Failed"];
- }
- }];
- }
- }
- - (void) setDebugMode: (BOOL) debug
- {
- self.debug = debug;
- }
- - (NSString*) getSDKVersion
- {
- return @"20130607";
- }
- - (NSString*) getPluginVersion
- {
- return @"0.2.0";
- }
- - (void) doShare
- {
- if (nil == mShareInfo) {
- [ShareWrapper onShareResult:self withRet:kShareFail withMsg:@"Shared info error"];
- return;
- }
- NSString* strText = [mShareInfo objectForKey:@"SharedText"];
- NSString* strImagePath = [mShareInfo objectForKey:@"SharedImagePath"];
- BOOL oldConfig = [UIApplication sharedApplication].networkActivityIndicatorVisible;
- [UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
-
- NSError* returnCode = nil;
- if (nil != strImagePath) {
- NSData* data = [NSData dataWithContentsOfFile:strImagePath];
- returnCode = [[FHSTwitterEngine sharedEngine] postTweet:strText withImageData:data];
- } else {
- returnCode = [[FHSTwitterEngine sharedEngine]postTweet:strText];
- }
- [UIApplication sharedApplication].networkActivityIndicatorVisible = oldConfig;
- if (returnCode) {
- NSString* strErrorCode = [NSString stringWithFormat:@"ErrorCode %ld", (long)returnCode.code];
- [ShareWrapper onShareResult:self withRet:kShareFail withMsg:strErrorCode];
- } else {
- [ShareWrapper onShareResult:self withRet:kShareSuccess withMsg:@"Share Succeed"];
- }
- }
- - (UIViewController *)getCurrentRootViewController {
- UIViewController *result = nil;
- // Try to find the root view controller programmically
- // Find the top window (that is not an alert view or other window)
- UIWindow *topWindow = [[UIApplication sharedApplication] keyWindow];
- if (topWindow.windowLevel != UIWindowLevelNormal)
- {
- NSArray *windows = [[UIApplication sharedApplication] windows];
- for(topWindow in windows)
- {
- if (topWindow.windowLevel == UIWindowLevelNormal)
- break;
- }
- }
- UIView *rootView = [[topWindow subviews] objectAtIndex:0];
- id nextResponder = [rootView nextResponder];
- if ([nextResponder isKindOfClass:[UIViewController class]])
- result = nextResponder;
- else if ([topWindow respondsToSelector:@selector(rootViewController)] && topWindow.rootViewController != nil)
- result = topWindow.rootViewController;
- else
- NSAssert(NO, @"Could not find a root view controller.");
- return result;
- }
- @end
|