首页 文章

Gluon Mobile Share按钮实现

提问于
浏览
0

Gluon Mobile是否有实施分享按钮的指导?我的目标是能够共享包含手机上不同应用程序链接的字符串 . At the moment, I need this only for the iOS implementation. 我能够找到这个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];
}

看看Gluon网站上的GoNative应用程序示例,似乎我可以使用上面的代码片段作为本机iOS代码 . 我是否必须更新ios build gradle以考虑上面第一个链接中提到的UIActivity类?

Update*

我已经能够根据这个问题的帮助here让这个工作 .

但是,在尝试安装本机库时,我收到此错误,这是可以理解的,因为 self 在代码范围内是未知的 . 我怎么能这样做?实例化一个弹出窗口或对话框并将 activityVC 传递给它?

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

1 回答

  • 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;
    }
    

    然后在我放入问题的代码段中,将 self 替换为 rootViewController

    [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];
    
    }
    

    Note I followed the GoNative application to generate my objective-c/ios files correctly.

    这导致最小的功能共享实现 only because I don't have Facebook installed on the IPhone simulator.

    enter image description here

相关问题