【问题标题】:Gluon Mobile Share Button ImplementationGluon 移动分享按钮实现
【发布时间】:2017-05-08 02:22:39
【问题描述】:

Gluon Mobile 对实现分享按钮有任何指导吗?我的目标是能够共享一个字符串,其中包含指向手机上不同应用程序的链接。 目前,我只需要在 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];
}

查看 Gluon 网站上的 GoNative 应用程序示例,我似乎可以在需要的地方使用上述代码 sn-p 作为本机 iOS 代码。我是否必须更新 ios 构建 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];

【问题讨论】:

    标签: gluon gluon-mobile


    【解决方案1】:

    因此,我能够使用 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;
    }
    

    然后在我放在问题中的代码sn-p中,将self替换为rootViewController:

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

    这导致修改后的代码sn-p:

    #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。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-24
      • 1970-01-01
      • 2016-10-22
      • 2012-02-12
      • 1970-01-01
      • 1970-01-01
      • 2014-04-13
      • 1970-01-01
      相关资源
      最近更新 更多