问题标签 [xamarin.ios-binding]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
408 浏览

xamarin.ios-binding - 当动态注册器已链接离开时,无法注册类 AdaptiveCardsBinding.iOS.ACOHostConfig

我正在为 AdaptiveCards 创建一个 Xamarin.iOS 绑定库。它在 iOS 模拟器上正常工作。但是,在真正的 iOS 设备上运行时,我收到以下错误:当动态注册器被链接时,无法注册类 AdaptiveCardsBinding.iOS.ACOHostConfig。

我已阅读有关链接器行为的文档并尝试了以下解决方案:

  1. 在引用的 iOS 应用程序中将链接器行为设置为不链接。这有效,但效率不高/不理想
  2. 首选解决方案:通过在 ACOHostConfig 类上添加以下属性来保留代码:[Preserve (AllMembers = true)]这不能解决问题。
  3. 添加 mtouch 参数:--linkskip=AdaptiveCardsBinding.iOS. 也不行。

有想法该怎么解决这个吗?

0 投票
0 回答
602 浏览

xamarin - CollectionView - 以编程方式更新 ItemsLayout 时出现问题

CollectionView.ItemsLayout在绑定项目源后以编程方式更新它,它在 Android 上运行良好,但在 iOS 上运行良好。iOS 应用程序不会抛出任何异常/错误,但应用程序挂起,当我查看输出窗口时,我收到以下消息:

在计算布局(即重入调用)的过程中检测到更新布局信息的尝试。这将导致意外行为或崩溃。如果在调用委托时触发了布局传递,则可能会发生这种情况。UICollectionViewFlowLayout 实例是 (<Xamarin_Forms_Platform_iOS_GridViewLayout: 0x7fb2940ec010>)

在 prepareLayout 调用(即重入调用)正在进行时准备布局的尝试已被忽略。请提交一个错误。UICollectionView 实例是 (<UICollectionView: 0x7f9e68a73000; frame = (0 0; 355 360); clipsToBounds = YES; autoresize = W+H;gestureRecognizers = <NSArray: 0x600003039c20>; layer = <CALayer: 0x600007e6e180>; contentOffset: {0, 0};contentSize:{1、0};adjustedContentInset:{0、0、0、0};布局:<Xamarin_Forms_Platform_iOS_GridViewLayout:0x7f9e647972e0>;数据源:<Xamarin_Forms_Platform_iOS_GroupableItemsViewController_1:0x7f9e64797940>>)

我的 XAML:

我的 XAML.cs:

0 投票
1 回答
89 浏览

xamarin.ios - 如何调试“安装失败”消息?

我目前正在尝试使用 Xamarin.forms 开发跨平台移动应用程序。作为此应用程序的一部分,我需要在我的 Xamarin.iOS 项目中包含第 3 方 .framework。我已经成功创建了一个 Xamarin.iOS 绑定库 .dll 并将其包含在我的项目中。我可以引用该库并编译没有错误,但是当我尝试将应用程序部署到 iPhone 模拟器时,应用程序将启动,然后崩溃并显示“安装失败”消息。

错误信息

如果我删除任何引用此 .dll 的代码行,该应用程序将运行良好。

有没有人知道如何解决这个问题?

可能有用的信息:
我正在 Visual Studio for Windows 中开发
Xamarin 版本:16.7.000.440
Xamarin.iOS 版本:13.20.2.2
XCode 版本:12.0.1
iOS 版本:14.0

设备崩溃日志:

0 投票
0 回答
353 浏览

xamarin - 由于链接器问题,Xamarin iOS 绑定库 (Swift) 构建错误

我有 Xamarin.iOS 项目,我正在尝试在其中使用 Vivalnk sdk(一个 Swift 5 框架)。

我正在尝试浏览本指南: https ://docs.microsoft.com/en-us/xamarin/ios/platform/binding-swift/walkthrough

请注意,我忽略了构建本机库的步骤,因为 Swift sdk 提供了内置的 Objective-c 标头。

所以,我使用了一个客观的Sharpie来生成 ApiDefinitions.cs 和 StructsAndEnums.cs 文件。

一旦使用此命令:(目标 c)

并且曾经使用过这个:(Swift)

最后,我使用了以下命令的结果:

然后,我创建了 iOS 绑定库,将这些文件替换为旧文件,并根据微软的文档设置构建操作。

然后,我将 Vivalnk 框架添加到 Native References,将 smartlink 设置为 true,并将 load 强制设置为 false。成功构建绑定库后,我将此 iOS 绑定库引用到我的 Xamarin.iOS 项目并使用它,但是当我构建 Xamarin.iOS 项目时,出现 249 错误,如下所示:

我在互联网上搜索了很多,也尝试了这些:

  • 将链接器行为设置为仅链接框架 SDK。
  • 在两个项目中安装 Xamarin.Swift。
  • 添加这个:

到 iOS 绑定库中本机引用的 Linker Flags。

添加这个:

在可执行项目的 iOS 构建选项中的其他 mtouch 参数中。

我检查了 Xcode 的位置,它就在那里。但他们都没有为我工作。我在 Visual Studio for Mac 和 windows 中都进行了测试,没有任何改变。

我在这里创建了一个示例项目,其中包含重现构建错误所需的一切: https ://github.com/SomayeEbrahimi/Vivalnk.iOS

环境:

更新

如果我将“Foundation”添加到原生引用的框架中,这些错误将消失,我们将出现以下错误

0 投票
1 回答
557 浏览

xamarin - 我想以 xamarin 形式在 IOS、iPad 上显示方形复选框

这是我的复选框代码我可以在 iOS 中为方形复选框做什么。我对 xamarin.forms 完全陌生,我需要添加一个复选框、单选按钮和下拉列表。我尝试了一些来自网络的样本,但我无法获得复选框。谁能帮我实现。Controls.Checkbox 在 Xamarin Forms 中为 ios 和 andorid 创建复选框。现在我得到了复选框,但我无法读取它是否被选中的值。这是我的代码

0 投票
0 回答
47 浏览

xamarin.ios - 应用程序在启动时关闭 - 适用于 Xamarin iOS 的 Redpark SDK 绑定

我已将本机框架Redpark Serial SDK 1.0.5转换为绑定库(名为:RedparkBinding)并在我的一个项目中使用它。

我仔细按照演练中的每个步骤:绑定 iOS Objective-C 库 RedparkBinding 项目的构建结果是成功的。

但是,我面临一个奇怪的问题。应用程序在启动时崩溃(原因:NullReferenceException - 在 sdk 内部有一个始终为空的单例类)。

在此处输入图像描述

更多细节:

  • 这发生在 DEBUG 和 RELEASE 模式中。
  • 支持的架构是 ARM64
  • 链接器行为:仅链接框架 SDK
  • 本机 SDK 示例完美运行。

我知道库本身按预期工作,因为它也用于原生 iOS 应用程序。我只是想弄清楚我的 Binding 项目配置中缺少什么。

这是与我的 .a 库关联的源 .h 文件:

这是用Sharpie创建的C#关联接口

这是 .a 文件的 LinkWith 选项 [assembly: LinkWith("libRedparkBinding.a”, SmartLink = true, ForceLoad = true)]

和 Makefile 文件:

此外,我在此处附加了所有必需的文件(本机库框架、本机库示例代码、绑定代码、SDK 用户指南)。

我感谢社区的任何建议。

0 投票
0 回答
52 浏览

xamarin.ios - 如何在 Xamarin.iOS 中使用来自 .NET Standard 程序集的 iOS 动态框架

我们有一个在各种平台上编译成动态库(.dll、.so 等)的类库(C++)。然后使用 .NET 中的 P/Invoke 加载动态库,包括 .NET Standard 2.1 程序集。现在,我们想在 iOS 上做同样的事情。我的理解是,我们可以将 C++ 代码编译为 iOS .dylib,用这个 .dylib 创建一个动态框架,然后通过 .NET Standard 2.1 程序集中的框架以某种方式使用这个 .dylib。有没有办法解决这个问题,或者这样的组合行不通?

0 投票
0 回答
44 浏览

xamarin - 如何在 xamarin.ios 中向 uiDatepicker 添加“完成”按钮以实现紧凑风格

点击日期选择器后,我试图在屏幕上手动添加一个按钮。但不管它总是在模态下或模糊不清。是否可以以某种方式将此按钮添加到该模式的顶部,然后当点击该按钮时,该模式将被解除。或者只有顶部子视图的按钮(在模式上)就足以让我工作。这是我的代码:

这是现在的结果(我想要清晰且可点击的红色模糊按钮) 在此处输入图像描述

0 投票
1 回答
211 浏览

ios - 当用户在信标范围内时,在 iOS 15 中一直执行 DidRangeBeacons

[预期行为:专门针对 iOS 15。iOS 14 或更低版本可以正常工作]

我有一个 Xamarin.Forms iOS 应用程序,我在其中监视和测距 BLE 信标。目标是处于前台、后台或终止状态时,当我进入一个区域时,应调用 EnteredRegion() 方法,并且 DidRangeBeacons() 应该开始被触发,每秒触发一次,并且永远不会停止。当我离开区域时,应该调用 ExitRegion() 并且 DidRangeBeacons 应该停止被解雇。如果我关闭应用程序/终止应用程序,走出该区域并再次走进去,应用程序应该调用 EnteredRegion 方法并且 DidRangeBeacons() 应该开始被调用,并且只要手机在范围内,这个方法 (DidRangeBeacons) 就永远不会停止的信标。

[当前功能:始终提供位置许可]

目前,当应用程序完全关闭/杀死并且我走进该区域时, EnteredRegion 方法将执行并且 DidRange 开始被调用。它执行几秒钟并在显示关闭时停止。当显示屏再次打开时,它再次开始调用。有时,它会执行一两分钟然后再次停止。只有当显示器打开时它才会重新开始。

如果我再次解锁屏幕并浏览手机,DidRangeBeacons 将停止执行。如果再次锁定手机并打开显示屏,DidRangeBeacons 将再次开始执行。

[代码]

当用户在范围内时,我希望 DidRangeBeacons 始终在前台、后台和终止状态下执行。任何建议如何相应地解决它?

0 投票
0 回答
62 浏览

xamarin - 依赖于 FirebaseCore 的 Xamarin.iOS 绑定库

我需要为具有许多依赖项的 Xamarin.iOS 绑定库,例如 Firebase/Core 和 Firebase/Messaging。

该文档之后,我创建了一个代理项目,生成了胖版本,使用 Sharpie 创建了 ApiDefinitions,在 Visual Studio for Mac 中生成了带有绑定项目的 dll,最后在成功构建的 Xamarin.iOS 项目中使用了它。

但是,该应用程序在启动时崩溃,在任何模拟器或真正的 iPhone 上,并带有以下日志:

我认为它来自 Xamarin 不支持的 Enable Bitcode 选项。事实上,我绑定的库没有这个选项,但它的依赖项之一有:

有没有机会我可以删除这个 Firebase 的本机依赖库并使用已经绑定的https://github.com/xamarin/GooglePlayServicesComponents/?请问我该怎么办?