标签: react-native-ios

如何从IOS本机模块(插件)调用react-native函数

我想从本机模块调用反应本机函数。

我为我的 React-Native 应用程序创建了一个条形码扫描仪插件,条形码扫描仪 SDK 可在本机 IOS 和 Android 中使用,因此,我提取这些本机代码并为 React-Native 应用程序创建一个插件(NPM)。

现在我的问题是,一旦条形码扫描仪扫描数据并发送到本机IOS,我如何在我的react-native应用程序中获取这些扫描数据?(我在IOS本机中获取了扫描数据)

我想在本机模块扫描数据后调用react-native应用程序函数并将这些数据发送到react-native

请给出示例或正确的文档,以便我可以尝试和实施。

提前致谢。

barcode-scanner react-native react-native-ios

5
推荐指数
1
解决办法
4077
查看次数

本机 UI 组件抛出不变违规:尝试注册两个同名的视图 FridgeCameraView

尝试学习 React Native 自定义本机 UI 组件。

// FridgeCameraViewManager.swift

import UIKit

@objc(FridgeCameraViewManager)
class FridgeCameraViewManager: RCTViewManager {

  override func view() -> UIView! {
    let label = UILabel()
    label.text = "Swift Component"
    label.textAlignment = .center
    return label
  }

  @objc static override func requiresMainQueueSetup() -> Bool {
    return false
  }
}
Run Code Online (Sandbox Code Playgroud)

// FridgeCameraViewManager.h

#import <Foundation/Foundation.h>
#import "React/RCTViewManager.h"

@interface RCT_EXTERN_MODULE(FridgeCameraViewManager, RCTViewManager)


@end
Run Code Online (Sandbox Code Playgroud)

// FridgeCameraView.js

import {requireNativeComponent} from 'react-native';
const FridgeCameraView = requireNativeComponent('FridgeCameraView', null);
export default FridgeCameraView;
Run Code Online (Sandbox Code Playgroud)

当我尝试在 App.js 中的某处使用 FridgeCameraView 组件时,它仅在我使用 Xcode 构建并运行项目时才有效。否则,在更改某些内容时使用热重载,我会收到“不变违规:尝试注册两个具有相同名称的视图 …

ios react-native react-native-ios react-native-native-ui-component

5
推荐指数
1
解决办法
970
查看次数

iPad OS 是否可以检测键盘是否处于浮动模式?

我们遇到了一个特定的错误iOS/iPadOS,当 iPad 在屏幕上显示浮动(类似 iPhone)键盘(而不是固定键盘)时,该错误似乎会被触发。

我们的问题特定于 React Native 和KeyboardAvoidingView组件。当组件渲染并且键盘浮动时,KeyboardAvoidingView完全错误地计算了键盘所需的高度,并隐藏了大约 95% 的屏幕高度。

本身KeyboardAvoidingView似乎没有办法检测浮动键盘是否打开。

是否有一个特定的 API 可以用来检测此键盘模式,以便我们可以关闭它KeyboardAvoidingView

键盘事件(keyboardWillShowkeyboardDidShow等)似乎没有返回任何具体线索。

objective-c ipad ios react-native react-native-ios

5
推荐指数
1
解决办法
1583
查看次数

如何在react-native-video中隐藏声音和全屏按钮

在视频屏幕中隐藏声音和全屏图标的任何选项。我正在使用react-native-video 包。

在此输入图像描述

react-native react-native-ios react-native-video

5
推荐指数
0
解决办法
461
查看次数

React Native 中嵌套元素的可访问性焦点顺序不正确

我正在开发一个混合匹配应用程序,我们在其中的几个模块中使用 React Native 组件。在本例中,我有一个表格视图,我们在其中的一些单元格中添加了 RN 组件。

我能够在这些 React Native 组件中启用嵌套元素的可访问性,但在 UITableView 中添加时焦点顺序似乎不正确。

视图层次结构如下所示:

 <E0>
    <E1 accessible={true}>
       <E11 accessible={true}>
       <E12 accessible={true}>...
    <E2 accessible={true}>
       <E21 accessible={true}>
       <E22 accessible={true}>...
Run Code Online (Sandbox Code Playgroud)

我期望焦点顺序为 E1 , E11, E12, E2 , E21, E22

但它按E1、E2 、E11、E12、E21、E22的顺序宣布 ,即先是父元素,然后是子元素

在 iOS 中,我们有accessibilityElements设置顺序的属性。有没有办法像React Native中那样设置焦点顺序,或者有其他方法可以实现这一点?

PS:当我在视图控制器中显示特定组件时,相同的组件按预期工作(即以正确的顺序宣布画外音)。

任何及时的帮助/有用的建议将不胜感激,因为我在这个问题上花了几天多的时间。

accessibility react-native react-native-ios

5
推荐指数
1
解决办法
3969
查看次数

最小化 IOS 应用程序时,后台处理在几秒钟后被终止

介绍

\n

我用 制作了一个VOIP 拨号器应用程序react-native。我正在使用react-native-callkeep在接到电话时向用户显示默认的IOS呼叫屏幕(在后台和前台),并且我正在使用react-native-push-notification弹出本地通知当接到电话时。

\n

问题

\n

当我最小化应用程序(使用主页按钮)并且应用程序收到呼叫时,它不会显示本地通知或呼叫屏幕。\n但是,如果在最小化操作之后立即接到呼叫,则屏幕和通知出现。

\n

对所发生情况的技术解释

\n

阅读日志,我发现 IOS 在打印以下行时终止了我的应用程序后台处理:

\n

15:08:23.085311-0300 symptomsd com.vmaxtelecom.vmaxfone: Foreground: false

\n

此后,前景或背景都不起作用

\n

代码解释

\n

也许问题不在于react-native-callkeep或react-native-push-notification本身(因为它们按预期工作)。我认为这是 IOS 本身的问题。

\n

我发现这个线程准确地定义了我身上发生的事情。

\n

我启用的功能

\n

在此输入图像描述

\n

我正在使用什么

\n

react-native version 0.61.5

\n

Xcode version 11.5 (11E608c) on a MacOS 10.15.5 Catalina

\n

IOS 13.4.1 on a Iphone 8

\n

I\'m using a release version of my project (The debug …

xcode objective-c ios react-native react-native-ios

5
推荐指数
0
解决办法
1万
查看次数

如何从 iOS 上的 React Native WebView 获取 Cookie?

我有一个在 web 视图中打开的单点登录网站。用户登录后,我需要使用 cookie 来从 API 请求令牌,并在应用程序中将其用于所有其他请求。这一切在 Android 上运行良好,但在 iOS 上,当我请求令牌时,没有 cookie。WebView 配置为使用共享 cookie 存储:

    <WebView
        source={{ uri: loginUrl }}
        onMessage={handleSsoLogin}
        injectedJavaScriptBeforeContentLoaded={JS_INTERFACE}
        sharedCookiesEnabled={true}
      />
Run Code Online (Sandbox Code Playgroud)

如果我使用 devTools 检查 webView,我可以看到 cookie。另外,如果我再次访问 SSO 站点,我已经记录了它。因此,cookie 被 webView 保存和使用。它们只是不被使用fetch并且 CookieManager 不访问它们:

const cookies = await CookieManager.get(url);
console.log({ cookies });
...
{"cookies": {}}
Run Code Online (Sandbox Code Playgroud)

那么,问题来了,如何从webView中获取这些cookie呢?

react-native react-native-ios react-native-webview react-native-cookies

5
推荐指数
1
解决办法
2万
查看次数

React-native-maps 初始缩放:0 不适用于 iOS

我找不到一种方法让 iOS RN 地图从缩放级别 0 开始或缩小到 0。

const allowScaling = false;

const region = {
  latitude: 0,
  longitude: 0,
  latitudeDelta: 170,
  longitudeDelta: 180,
};

return (
  <View
    style={{
      position: 'relative',
      width: '100%',
      height: '100%',
      overflow: 'hidden',
    }}
  >
    <MapView
      ref={this.setRef}
      onPress={this.onPress}
      onLongPress={this.onLongPress}
      style={{ width: '100%', height: '100%' }}
      zoomControlEnabled
      provider={Platform.OS === 'ios' ? 'google' : 'osmdroid'}
      moveOnMarkerPress={false}
      customMapStyle={[
        {
          stylers: [
            {
              visibility: 'off',
            },
          ],
        },
      ]}
      rotateEnabled={false}
      scrollEnabled={allowScaling}
      pitchEnabled={allowScaling}
      zoomTapEnabled={allowScaling}
      zoomEnabled={allowScaling}
      cacheEnabled={false}
      initialRegion={region}
      onRegionChangeComplete={this.onRegionChange}
      maxZoomLevel={Platform.OS === 'ios' ? …
Run Code Online (Sandbox Code Playgroud)

react-native react-native-ios react-native-maps

5
推荐指数
1
解决办法
3152
查看次数

为什么升级到 0.63.3 后命令“react-native run-ios”构建失败?

我刚刚更新到 RN v0.63.3。react-native run-ios更改应用程序名称后,我在以前的反应本机版本上遇到了问题,并且项目/方案有不同的名称,从未解决该问题,每个人都说只需升级即可。

现在在 v0.63.3 上仍然存在构建失败的问题react-native run-ios。这次的错误是:

** 构建失败 **

以下构建命令失败:CompileC /Users/vorousjames/Library/Developer/Xcode/DerivedData/<OLD_NAME>-gdmnlxiprekjqhfiueouiidqhqnl/Build/Intermediates.noindex/<NEW_NAME>.build/Debug-iphonesimulator/<NEW_NAME>.build/Objects- Normal/x86_64/AppDelegate.o /Users/Desktop/Development/App/iOS/<OLD_NAME>/AppDelegate.m 正常 x86_64 Objective-c com.apple.compilers.llvm.clang.1_0.compiler (1 次失败)

从 Xcode 内部构建/运行没有问题。只有react-native run-ios

编辑:我想也许是因为我在全局安装了 cli,因为我只是调用react-native run-ios. 我相信使用全局安装。因此,由于它已经过时,我全局卸载并尝试将社区包与npx react-native run-ios. 现在它给出了另一个 comileC 错误,但有所不同。

** 构建失败 **

以下构建命令失败:CompileC /Users/Library/Developer/Xcode/DerivedData/App-gdmnlxiprekjqhfiueouiidqhqnl/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/RNFirebase.build/Objects-normal/x86_64/RNFirebaseMessaging.o /用户/桌面/开发/应用程序/node_modules/react-native-firebase/ios/RNFirebase/messaging/RNFirebaseMessaging.m正常x86_64目标-c com.apple.compilers.llvm.clang.1_0.compiler CompileC /Users/Library/Developer /Xcode/DerivedData/App-gdmnlxiprekjqhfiueouiidqhqnl/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/RNFirebase.build/Objects-normal/x86_64/RNFirebaseFirestore.o /Users/Desktop/Development/App/node_modules/react-native -firebase/ios/RNFirebase/firestore/RNFirebaseFirestore.m 正常 x86_64 Objective-c com.apple.compilers.llvm.clang.1_0.compiler (2 次失败)

这完全扼杀了我快速迭代的能力,欢迎任何建议

反应原生:0.63.3 反应原生-cli(全局):2.0.1 反应原生社区/cli:^4.8.0 Xcode:12.0.1 iOS:14.0.1

更新:

包.json:

{
    "name": "Aflare",
    "version": "0.0.1",
    "private": true,
    "scripts": {
        "android": "react-native …
Run Code Online (Sandbox Code Playgroud)

ios react-native react-native-ios react-native-cli

5
推荐指数
1
解决办法
2万
查看次数

将 React Native 从 0.62.2 升级到 0.63.0 在空白屏幕上挂起

我正在尝试手动将 React Native 从 0.62.2 升级到 0.63.0。我跟着升级助手

应用程序构建没有错误,但在 android 和 ios 启动时显示白屏。

在此输入图像描述

依赖关系

"react": "16.13.1",  
"react-dom": "^16.13.1",  
"react-native": "0.63.0"
Run Code Online (Sandbox Code Playgroud)

我尝试清除缓存,删除node_modules和pod,然后运行npm install和pod install。没有任何帮助,我仍然有同样的问题。

react-native react-native-ios react-navigation

5
推荐指数
1
解决办法
1575
查看次数