2017-05-08 134 views
0

胶子移动有没有实施分享按钮的指导?我的目标是能够在手机上共享包含指向不同应用的链接的字符串。 目前,我只需要这个iOS实现。我能找到这个link,提供了一个简单的方法在Objective-C要做到这一点:胶子移动分享按钮实施

- (IBAction)shareButton:(UIBarButtonItem *)sender 
{ 
    NSString *textToShare = @"Look at this awesome website for aspiring iOS Developers!"; 
    NSURL *myWebsite = [NSURL URLWithString:@"http://www.codingexplorer.com/"]; 

    NSArray *objectsToShare = @[textToShare, myWebsite]; 

    UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:objectsToShare applicationActivities:nil]; 

    NSArray *excludeActivities = @[UIActivityTypeAirDrop, 
            UIActivityTypePrint, 
            UIActivityTypeAssignToContact, 
            UIActivityTypeSaveToCameraRoll, 
            UIActivityTypeAddToReadingList, 
            UIActivityTypePostToFlickr, 
            UIActivityTypePostToVimeo]; 

    activityVC.excludedActivityTypes = excludeActivities; 

    [self presentViewController:activityVC animated:YES completion:nil]; 
} 

纵观胶子网站上的GoNative应用实例,好像我可以用上面的代码段作为本机iOS代码需要。我是否必须更新ios build gradle来解释上面第一个链接中提到的UIActivity类?

更新*

我已经能够得到这个基础上帮助这个问题here工作。

但是,当试图安装本机库时,我得到这个错误是可以理解的,因为self在代码范围内是未知的。我将如何能够做到这一点?实例化弹出窗口或对话框并将activityVC传递给它?

/Users/ashishsharma/NetBeansProjects/konfamdbranch/src/ios/n‌​ative/Share.m:25:6: error: use of undeclared identifier 'self' [self presentViewController:activityVC animated:YES completion:nil];

回答

1

所以我能够通过对条码扫描服务中的现有代码会沿着解决互联网(如上所示)在此使用的例子。我在上面的代码中遇到的问题是无法找到当前的视图控制器。然而,看着为Barcode Scan位斗源,我能得到下面的代码根视图:

if(![[UIApplication sharedApplication] keyWindow]) 
{ 
    NSLog(@"key window was nil"); 
    return; 
} 

// get the root view controller 
UIViewController *rootViewController = [[[UIApplication sharedApplication] keyWindow] rootViewController]; 
if(!rootViewController) 
{ 
    NSLog(@"rootViewController was nil"); 
    return; 
} 

然后在代码片段我放在这个问题,与rootViewController替换self

[rootViewController presentViewController:activityVC animated:YES completion:nil]; 

这导致了修改后的代码片段:

#import <UIKit/UIKit.h> 

#include "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/JavaVM.framework/Versions/A/Headers/jni.h" 

JNIEXPORT void JNICALL  Java_com_gluonhq_charm_down_plugins_ios_IOSShareService_shareMessage 
(JNIEnv *env, jclass jClass, jstring jMessage) { 

    if(![[UIApplication sharedApplication] keyWindow]) 
    { 
     NSLog(@"key window was nil"); 
     return; 
    } 

    // get the root view controller 
    UIViewController *rootViewController = [[[UIApplication sharedApplication] keyWindow] rootViewController]; 
    if(!rootViewController) 
    { 
     NSLog(@"rootViewController was nil"); 
     return; 
    } 

    NSString *textToShare = @"Check out this site!"; 
    NSURL *myWebsite = [NSURL URLWithString:@"http://www.google.com/"]; 

    NSArray *objectsToShare = @[textToShare, myWebsite]; 

    UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:objectsToShare applicationActivities:nil]; 

    NSArray *excludeActivities = @[UIActivityTypeAirDrop, 
            UIActivityTypePrint, 
            UIActivityTypeAssignToContact, 
            UIActivityTypeSaveToCameraRoll, 
            UIActivityTypeAddToReadingList, 
            UIActivityTypePostToFlickr, 
            UIActivityTypePostToVimeo]; 

    activityVC.excludedActivityTypes = excludeActivities; 

    [rootViewController presentViewController:activityVC animated:YES completion:nil]; 

} 

注意我跟着戈纳tive应用程序正确生成我的objective-c/ios文件。

这导致了最小的功能共享实现,这是因为我没有在iPhone模拟器上安装Facebook。

enter image description here