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/native/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。
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/native/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。