如何在 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 已经提供了openURLcanOpenURL:facebook.github.io/react-native/docs/linking.html

以上是关于如何在 IOS 中从我的 React-Native 应用程序打开外部应用程序?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS 中从 UITableView 播放选定的媒体项?

如何在 Eclipse 中从我的 Android 项目中删除依赖项

如何在 aws 中从我的 mac 设置和登录 ***?

如何从我的 react-native 项目构建 android apk?

我如何在swiftui中从我的应用程序中的任何视图访问这个:@Environment(\.managedObjectContext) var context? [关闭]

如何在 django 2.0.4 中从我的专辑模型自动生成 slug