如何在 IOS 中从我的 React-Native 应用程序打开外部应用程序?
Posted
技术标签:
【中文标题】如何在 IOS 中从我的 React-Native 应用程序打开外部应用程序?【英文标题】:How can I open a external App from my React-Native App in IOS? 【发布时间】:2017-11-07 08:39:17 【问题描述】:例如,我正在尝试从我自己的 React-Native 应用程序中打开 What'sApp。我可以使用 react-native-send-intent (SendIntentandroid) 在 Android 中做到这一点,但它只适用于 Android。我想在ios中做同样的事情。链接对我不起作用,我不知道为什么。
【问题讨论】:
如果你使用Linking.openURL('whatsapp://');
会发生什么?使用 Linking 时是否遇到任何控制台错误?
我试过了,没有任何反应
【参考方案1】:
最后,在 IOS 中是 Linking.openUR("whatsapp://app") APP 这个词就是我要找的。p>
【讨论】:
【参考方案2】:如果你想从你的应用分享一些东西到其他应用,那么你可以通过 react native 的 Share
模块来实现。
此模块的文档可用here。
您是否想打开其他应用程序,例如whatsapp,或gmail或邮件应用程序等,您可以通过在IOS中实现native-module来实现。
#import "RCTBridgeModule.h"
#ifndef SampleNativeModule_h
#define SampleNativeModule_h
#endif /* SampleNativeModule_h */
@interface SampleNativeModule_h : NSObject <RCTBridgeModule>
@end
上面的文件是SampleNativeModule.h
#import "SampleNativeModule.h"
#import "RCTLog.h"
@import UIKit;
@implementation SampleNativeModule
RCT_EXPORT_MODULE();
RCT_EXPORT_METHOD(openGmail)
NSURL* mailURL = [NSURL URLWithString:@"message://"];
NSURL* gmailURL = [NSURL URLWithString:@"googlegmail://"];
NSURL* appStoreURL = [NSURL URLWithString:@"itms://itunes.apple.com/us/app/googlegmail"];
if([[UIApplication sharedApplication] canOpenURL:gmailURL])
[[UIApplication sharedApplication] openURL:gmailURL];
else if ([[UIApplication sharedApplication] canOpenURL:mailURL])
[[UIApplication sharedApplication] openURL:mailURL];
else
[[UIApplication sharedApplication] openURL:appStoreURL];
@end
以上文件为 SampleNativeModule.m
这是原生模块文件,你可以这样
import NativeModules from 'react-native'
const SampleNativeModule = NativeModules.SampleNativeModule;
// ........
SampleNativeModule.openGmail();
上面我实现了在 IOS 中打开 gmail 应用程序的方法,但是您可以通过将 URL 传递给您的本机模块并打开相应的应用程序来为 whatsapp 和其他应用程序执行此操作。
【讨论】:
感谢您的评论。我有一个疑问,我不知道在哪里创建这个文件。我对 Objetive C 或 swift 一无所知。在文档中也没有说明在哪里创建文件。对不起,我的英语。 你可以在你的 react-nativeproject 的 IOS 文件夹中创建。本地模块的文档中提供了详细信息。 这里不需要自定义原生模块,Linking
API 已经提供了openURL
和canOpenURL
:facebook.github.io/react-native/docs/linking.html以上是关于如何在 IOS 中从我的 React-Native 应用程序打开外部应用程序?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 iOS 中从 UITableView 播放选定的媒体项?
如何在 Eclipse 中从我的 Android 项目中删除依赖项
如何从我的 react-native 项目构建 android apk?
我如何在swiftui中从我的应用程序中的任何视图访问这个:@Environment(\.managedObjectContext) var context? [关闭]