Gluon 移动共享按钮实现

Gluon Mobile Share Button Implementation

Gluon Mobile 是否有任何关于实现分享按钮的指南?我的目标是能够将包含 link 的字符串共享给 phone 上的不同应用程序。 目前,我只需要 iOS 实现。 我能够找到这个 link,它提供了一种在 [=33] 中执行此操作的简单方法=]:

- (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 构建 gradle 以说明上面第一个 link 中提到的 UIActivity class?

更新*

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

然而,当我尝试安装本机库时,出现了这个错误,这是可以理解的,因为 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];

因此,我能够使用 Internet 上的示例(如上所示)解决此问题,同时查看条形码扫描服务的现有代码。我在上面的代码中遇到的问题是找不到当前的视图控制器。但是,查看 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];

}

注意我按照 GoNative 应用程序正确生成了我的 objective-c/ios 文件。

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