问题标签 [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 回答
82 浏览

xamarin - 框架未检测到读卡器

我创建了绑定库来绑定应该读取智能卡数据的框架(它在 XCode 上正常工作),但在 Xamarin.iOS 应用程序中,从未检测到读卡器。我正在使用Tactivo 读卡器

注意:我在绑定库中尝试了所有可能的场景,现在我认为这不是绑定库的问题,应该在应用程序部署时需要加载一些库才能让框架通过插入卡来触发读者。或者它与权限和应用程序功能有关。

应用程序根本不处理读卡器!

在这里您可以找到有关绑定库的详细信息。

任何人都可以帮忙吗?

0 投票
0 回答
144 浏览

xamarin - F# Fake 正在尝试使用“btouch-native.exe 无效”错误构建 Xamarin.iOS 绑定

我有一个带有 Xamarin.iOS 自定义绑定的 Xamarin.iOS 解决方案,我可以在 Visual Studio for Mac 的 Mac OS 上本地构建它,没有任何问题。但是,当我尝试使用 F# Fake 构建相同的解决方案并在我的 Mac OS 构建服务器上使用相同版本的工具构建脚本时,我收到以下错误:

/Library/Frameworks/Mono.framework/External/xbuild/Xamarin/iOS/Xamarin.iOS.ObjCBinding.CSharp.targets(58,3):指定任务可执行位置“/Library/Frameworks/Mono.framework/Versions/5.4 .1/lib/mono/xbuild/Xamarin/iOS/btouch-native.exe”无效。

我检查了ObjCBinding.CSharp.targets并且Xamarin.iOS.ObjCBinding.CSharp.props可以看到由于某种原因我的 Mac OS 构建主机被视为非 Unix 系统:

我还搜索了BTouchToolExe工具并在此处找到它,使用此路径(适用于所有平台)更新了我的 .prop 文件,并遇到了很多问题,这让我认为我应该找到根本原因,而不是仅仅尝试修复一个症状:

/Library/Frameworks/Xamarin.iOS.framework/Versions/11.6.1.3/bin/btouch-native

我尝试在我的构建主机上使用 Visual Studio for Mac 构建相同的源代码 - 它工作得非常好,所以这似乎是我的 F# Fake 和构建脚本的某种问题(大部分是默认的)。我的设置是(最新和最好的):

  1. Mac OS 构建主机
  2. 单核细胞增多症5.4.1
  3. 适用于 Mac 的 Visual Studio7.3.3
  4. Xamarin.iOS11.6.1.3

我的构建主机上的哪个配置可能有误?

0 投票
2 回答
301 浏览

xamarin - 绑定 iOS 框架会导致临时文件损坏

我有一个相当庞大的 iOS 框架要绑定。这个框架依赖于另外两个。

我创建了绑定项目,成功生成了ApiDefinitions.cs文件和StructsAndEnums.cs。到目前为止,一切都很好。

现在,当我尝试在调试模式下构建它时,我收到大约 30 多个关于临时文件中的语法问题的错误。

这些错误仅发生在 Trampolines.g.cs 和 SupportDelegates.g.cs 文件中。两者中最糟糕的是 SupportDelegates.g.cs 文件,它看起来像这样:

Trampolines.g.cs 文件几乎完全生成,但在生成的 C# 代码中间出现了同样的问题:

其他一些绑定项目正在生成相同类型的文件,并且一切似乎都工作正常,所以我实际上正在努力寻找其根本原因。

有任何想法吗 ?

编辑:这里提供更多信息是生成的接口定义 https://gist.github.com/Miiie/367e17335431e932acdc92c65b504bd4

EDIT2:这是作为日志输出生成的Sharpie https://gist.github.com/Miiiite/e272622df2e853d53f1add4c8eb4eabf

0 投票
2 回答
3996 浏览

c# - 使用 ItemAppearing 事件在 ListView 中向下滚动跳过 Xamarin.Forms 中的记录

ListView在 Xamarin 页面中。我使用ItemAppearing事件向下滚动。ListViewCell 高度很大,因此首先覆盖 1 个屏幕,然后覆盖第二个视单元的 80%。

加载更多数据以向下滚动的步骤:

  1. 最初在页面加载时,它调用 API 并在 EmployerResult List 中获取 10 条记录。这将使用数据绑定添加到 ListView 中。
  2. ItemAppearing活动。在这个事件中有一个条件。当最后一个单元格开始出现时,它会调用 API 并再次在 ViewModel 的 List 对象中附加 10 条记录。
  3. 因此,每次最后一个单元格开始出现时,它都会调用 API 并附加 10 条记录。

现在重点是每次加载,它会跳过最后一条记录并显示下 10 条记录的第一条记录。但是,如果用户快速向下滚动,有时它会跳过 2-3 条记录。

即,如果我第一次有 10 条记录。现在我在第 9 条记录上,我正在向下滚动到第 10 条。第 10 条记录开始出现,API 调用触发。此调用完成后,屏幕将在屏幕顶部显示第 11 条记录。这里,第 10 条记录被跳过。这样用户将看到第 11 条记录而不是第 10 条。在这里,用户需要再次向上滚动才能看到第 10 条记录。

有时,如果用户快速向下滚动,它会跳过 2-3 条记录。

有人可以建议我吗?

代码

XAML

XAML.CS

视图模型

0 投票
1 回答
428 浏览

ios - 不受支持的 clang 可用性平台:“bridgeos”

我正在尝试绑定 Custom Native iOS Framework 并在 Sharpie bind -output 绑定的第一阶段遇到此错误。以下是我点击以下命令时的命令和日志:

Sharpie 绑定 --output=filename --namespace=namespacename --sdk=iphoneos11.4 /path/to/the/headerfile

日志:

System.Exception:不支持的clang可用性平台:'bridgeos' at Sharpie.Bind.Attributes.AvailabilityBaseAttribute+d__6.MoveNext () [0x0037d] in /Users/builder/vsts/_work/2/s/Sharpie.Bind/Attributes/AvailabilityBaseAttribute .cs:192 在 System.Linq.Enumerable+SelectManySingleSelectorIterator`2[TSource,TResult].MoveNext () [0x0006f] in <3fb92ec709f44a579da6a23087df403d>:0 在 Sharpie.Bind.Massagers.AvailabilityMassager.Massage (ICSharpCode.NRefactory.CSharp.EntityDeclaration实体)[0x00092] 在 /Users/builder/vsts/_work/2/s/Sharpie.Bind/Massagers/AvailabilityMassager.cs:55 在 Sharpie.Bind.Massagers.AvailabilityMassager.VisitPropertyDeclaration (ICSharpCode.NRefactory.CSharp.PropertyDeclaration propertyDeclaration) /Users/builder/vsts/_work/2/s/Sharpie.Bind/Massagers/AvailabilityMassager.cs 中的 [0x00000]:29 在 ICSharpCode.NRefactory.CSharp.PropertyDeclaration.AcceptVisitor (ICSharpCode.NRefactory.CSharp.IAstVisitor 访问者) [0x00000] 在:0 在 ICSharpCode.NRefactory.CSharp.DepthFirstAstVisitor.VisitChildren (ICSharpCode.NRefactory.CSharp.AstNode 节点) [0x00010]在:0 在 ICSharpCode.NRefactory.CSharp.DepthFirstAstVisitor.VisitTypeDeclaration (ICSharpCode.NRefactory.CSharp.TypeDeclaration typeDeclaration) [0x00000] 在:0 在 Sharpie.Bind.Massagers.AvailabilityMassager.VisitTypeDeclaration (ICSharpCode.NRefactory.CSharp.TypeDeclaration typeDeclaration) [ 0x00006] 在 /Users/builder/vsts/_work/2/s/Sharpie.Bind/Massagers/AvailabilityMassager.cs:24 在 ICSharpCode.NRefactory.CSharp.TypeDeclaration.AcceptVisitor (ICSharpCode.NRefactory.CSharp.IAstVisitor 访问者) [0x00000]在:0 在 ICSharpCode.NRefactory.CSharp.DepthFirstAstVisitor。VisitChildren (ICSharpCode.NRefactory.CSharp.AstNode 节点) [0x00010] 在 :0 在 ICSharpCode.NRefactory.CSharp.DepthFirstAstVisitor.VisitSyntaxTree (ICSharpCode.NRefactory.CSharp.SyntaxTree syntaxTree) [0x00000] 在 :0 在 Sharpie.Bind.DocumentSyntaxTree。 AcceptVisitor (ICSharpCode.NRefactory.CSharp.IAstVisitor visitor) [0x00015] in /Users/builder/vsts/_work/2/s/Sharpie.Bind/DocumentSyntaxTree.cs:37 at Sharpie.Bind.BindingMassager.Massage (ICSharpCode.NRefactory. CSharp.AstNode astNode, Sharpie.Bind.BindingTarget bindingTarget) [0x00033] in /Users/builder/vsts/_work/2/s/Sharpie.Bind/BindingMassager.cs:103 at Sharpie.Bind.BindingFrontend.Bind (Clang.Ast .Decl decl) [0x000b5] in /Users/builder/vsts/_work/2/s/Sharpie.Bind/BindingFrontend.cs:61 at Sharpie.BindTool.HandleTranslationUnit (Clang.Ast.TranslationUnitDecl decl) [0x0018b] 在 /Users/builder/vsts/_work/2/s/Sharpie/BindTool.cs:164 在 Clang.Driver.HandleTranslationUnit (Clang.Ast.TranslationUnitDecl translationUnit) [0x00000] 在 /Users/builder/ vsts/_work/2/s/Clang/Driver.cs:158 在 /Users/builder/vsts/_work/2/s/Clang/Driver.cs 中的 Clang.Driver.HandleTranslationUnit (System.IntPtr translationUnit) [0x00000]: 148 at (wrapper managed-to-native) Clang.Driver:RunInternal (Clang.Driver,string[],string,Clang.Frontend.DiagnosticConsumer) at Clang.Driver.Run (System.String[] inputFiles, System.String[ ] clangArgs, Clang.Frontend.DiagnosticConsumer diagnosticConsumer) [0x00177] in /Users/builder/vsts/_work/2/s/Clang/Driver.cs:139 at Sharpie.ParseTool.Run () [0x005c8] in /Users/builder /vsts/_work/2/s/Sharpie/ParseTool.cs:576 在 Sharpie.BindTool。CoreRun () [0x00001] 在 /Users/builder/vsts/_work/2/s/Sharpie/BindTool.cs:120 在 Sharpie.BindTool.Run () [0x00026] 在 /Users/builder/vsts/_work/2/ s/Sharpie/BindTool.cs:98

以下是命令的详细信息:sharpie xcode -sdks

sdk:appletvos11.4 拱:arm64
sdk:iphoneos11.4 拱:arm64 armv7
sdk:macosx10.13 拱:x86_64 i386
sdk:watchos4.3 拱:armv7k

0 投票
1 回答
298 浏览

xamarin - Xamarin iOS 绑定构建没有错误,但在启动时崩溃,没有输出

我从 Adob​​e 的 AccessEnabler 两个本地库(ios 和 Android)中创建了一个统一的 API。现在Android绑定工作了,没问题。然而,iOS 有问题。绑定项目构建并遵守没有问题,但是当我将它添加到我的示例(或任何示例)时,测试应用程序会构建和编译。但是当我启动应用程序时,它只是在启动时崩溃而没有输出。我必须深入研究 Mac 上的控制台日志才能找到:

我已经阅读了有关绑定过程的所有 Xamarin 文档,以及这里和 Xamarin 论坛上的无数线程,但什么也没有。大多数错误都指向涉及 iOS 系统未嵌入框架的问题。

要添加,我尝试了(.framework 和 .a)两种方式以及手动添加它或在“Native References”部分中添加它。更糟糕的是,有一个旧版本的 SDK 不久前被另一个同事绑定,它可以工作。但我需要使用最新的,因为他们在内部添加和重组了一些东西。

任何帮助将不胜感激。

0 投票
1 回答
218 浏览

xamarin - Objective-sharpie ApiDefinition 包含重载方法?

经过一番摸索后,我终于得到了.framework成功绑定文件的 Objective-sharpie,但是ApiDefinition.cs它生成的文件包含一些不规则性。

所以这实际上不会编译,因为 Visual Studio 恰当地指出,尽管方法具有不同的[Export]属性,但它们具有完全相同的定义。我尝试更改它,因此只有一个具有多个[Export]属性的方法,但这也是不允许的。不知道在这里做什么。

using顶部还有一个声明,我认为试图指出Native Reference我已经在 Visual Studio for Mac 的 Xamarin 项目中进行了设置,但它不起作用(type or namespace could not be found are you missing an assembly reference, etc.

非常感谢任何帮助!

0 投票
1 回答
204 浏览

c# - C# 绑定库方法不接受实现参数

尝试在 Xamarin.iOS 中实现新的 SnapChat 创意工具包,我使用 Objective Sharpie 绑定了 SDK 框架。在遵循其他 SDK 的官方文档(仅包含 swift 和 obj-c 的实现步骤)时,我成功实现了 Login Kit ——我在尝试将内容发送到 SnapChat 时遇到了这个代码。

特别是,在 Documentation中,要将内容发送到 api,使用以下代码:

根据文档,

SCSDKPhotoSnapContent 是 SCSDKSnapContent 协议的实现。它提供了一种对照片 Snap 进行建模以共享到 Snapchat 的方法。

这是我的 C# 实现:

问题是 SCSDKSnapAPI 构造函数只接受 SCSDKSnapContent,它是一个抽象类,而不是它的实现,调用它时出现错误:

CS1503 参数 1:无法从“SCSDKCreativeKit_Bindings.SCSDKPhotoSnapContent”转换为“SCSDKCreativeKit_Bindings.SCSDKSnapContent”

编辑:

ApiDefinition.cs

我尝试添加另一个这样的构造函数:

代码现在构建,但我在回调时从 SnapChat 收到以下错误代码:

SnapEncryptionMetadataUnexpectedStatusCode

0 投票
1 回答
1113 浏览

c# - MT5211:本机链接失败,未定义的 Objective-C 类

我从一个 Objective-C 框架进行了绑定,它工作正常,但是当我尝试链接我的 Xamarin.iOS 项目(仅限链接框架 SDK)时,我收到此错误

MTOUCH:错误 MT5211:本机链接失败,未定义的 Objective-C 类:GLKView。在与您的应用程序链接的任何库或框架中都找不到符号“_OBJC_CLASS_$_GLKView”。(MT5211)

在 microsoft 文档中,说将[Protocol]属性添加到绑定项目。

我尝试在ApiDefinition.cs中添加属性,首先在类的顶部,然后在类具有的所有方法和接口之前,但没有成功。

github repo的链接

我究竟做错了什么 ?

0 投票
1 回答
97 浏览

xamarin.ios - Xamarin ios 上的 Mvvcross WithFallback

我在 xamarin iOS 上使用 MvvmCross。我在 ViewModel 和 json 上使用 fluent 进行绑定。我想尝试 WithFallback() 函数,但是当我的 ViewModel 上的属性(在本例中为字符串)为 null 或为空时,它什么也不做。我试过这个:

另一个问题是我如何将该回退与 viewmodel 或 json 的属性绑定。非常感谢!