我想从本机模块调用反应本机函数。
我为我的 React-Native 应用程序创建了一个条形码扫描仪插件,条形码扫描仪 SDK 可在本机 IOS 和 Android 中使用,因此,我提取这些本机代码并为 React-Native 应用程序创建一个插件(NPM)。
现在我的问题是,一旦条形码扫描仪扫描数据并发送到本机IOS,我如何在我的react-native应用程序中获取这些扫描数据?(我在IOS本机中获取了扫描数据)
我想在本机模块扫描数据后调用react-native应用程序函数并将这些数据发送到react-native
请给出示例或正确的文档,以便我可以尝试和实施。
提前致谢。
尝试学习 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
我们遇到了一个特定的错误iOS/iPadOS,当 iPad 在屏幕上显示浮动(类似 iPhone)键盘(而不是固定键盘)时,该错误似乎会被触发。
我们的问题特定于 React Native 和KeyboardAvoidingView组件。当组件渲染并且键盘浮动时,KeyboardAvoidingView完全错误地计算了键盘所需的高度,并隐藏了大约 95% 的屏幕高度。
本身KeyboardAvoidingView似乎没有办法检测浮动键盘是否打开。
是否有一个特定的 API 可以用来检测此键盘模式,以便我们可以关闭它KeyboardAvoidingView?
键盘事件(keyboardWillShow、keyboardDidShow等)似乎没有返回任何具体线索。
我正在开发一个混合匹配应用程序,我们在其中的几个模块中使用 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:当我在视图控制器中显示特定组件时,相同的组件按预期工作(即以正确的顺序宣布画外音)。
任何及时的帮助/有用的建议将不胜感激,因为我在这个问题上花了几天多的时间。
介绍
\n我用 制作了一个VOIP 拨号器应用程序react-native。我正在使用react-native-callkeep在接到电话时向用户显示默认的IOS呼叫屏幕(在后台和前台),并且我正在使用react-native-push-notification弹出本地通知当接到电话时。
问题
\n当我最小化应用程序(使用主页按钮)并且应用程序收到呼叫时,它不会显示本地通知或呼叫屏幕。\n但是,如果在最小化操作之后立即接到呼叫,则屏幕和通知出现。
\n对所发生情况的技术解释
\n阅读日志,我发现 IOS 在打印以下行时终止了我的应用程序后台处理:
\n15:08:23.085311-0300 symptomsd com.vmaxtelecom.vmaxfone: Foreground: false
此后,前景或背景都不起作用
\n代码解释
\n也许问题不在于react-native-callkeep或react-native-push-notification本身(因为它们按预期工作)。我认为这是 IOS 本身的问题。
\n我发现这个线程准确地定义了我身上发生的事情。
\n我启用的功能
\n\n我正在使用什么
\nreact-native version 0.61.5
Xcode version 11.5 (11E608c) on a MacOS 10.15.5 Catalina
IOS 13.4.1 on a Iphone 8
I\'m using a release version of my project (The debug …
我有一个在 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
我找不到一种方法让 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) 我刚刚更新到 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) 我正在尝试手动将 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 ×10
react-native-ios ×10
ios ×4
objective-c ×2
ipad ×1
react-native-native-ui-component ×1
xcode ×1