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

xamarin - WorldPayCSE 的 Xamarin IOS 绑定库

我需要在 xamarin 表单中为 IOS 和 android 使用 worldPay CSE(客户端加密)SDK(https://developer.worldpay.com/docs/wpg/clientsideencryption),所以我创建了 2 个绑定库。我已经成功地为 android 创建了一个包装器,这工作正常,但我遇到了 IOS 问题。

我下载了https://github.com/Worldpay/worldpay-cse-lib-ios并按照以下教程创建绑定库并使用客观 Sharpie https://www.xamboy.com/2020/07映射 API 定义/20/creating-a-xamarin-binding-library-for-ios-and-android-part-1/

我能够构建解决方案,它似乎是从头文件创建对象,但是当我运行 worldpayCSE.Encrypt(wpCardData, out NSEncryptError) 方法时,出现以下错误:

抛出 Objective-C 异常。Name: NSInvalidArgumentException Reason: -[NSTaggedPointerString isEmpty]: unrecognized selector sent to instance 0xff2d7cc5da80afba Native stack trace: 0 CoreFoundation 0x000000010b2ebfba __exceptionPreprocess + 242 1 libobjc.A.dylib
0x000000011c694ff5 objc_exception_throw + 48 2 CoreFoundation
0x000000010b2fad2f +[NSObject(NSObject) instanceMethodSignatureForSelector:] + 0 3 CoreFoundation
0x000000010b2f04cf转发+ 1455 4 CoreFoundation
0x000000010b2f27a8 _CF_forwarding_prep_0 + 120 5
Test3dsecureSolution.iOS 0x000000010a6d180a -[WPCardValidator validateNumber:withExpectedLength:] + 61 6 Test3dsecureSolution.iOS 0x000000010a6d18ba -[WPCardValidator validateMonth:] + 48 7 Test3dsecureSolution.iOS 0x000000010a6d153e -[WPCardValidator validate:] + 117 8
Test3dsecureSolution.iOS 0x000000010a6d3b66 +[WorldpayCSE validate: ] + 72 9 Test3dsecureSolution.iOS
0x000000010aa41089 xamarin_dyn_objc_msgSend + 217 10 ???
0x00000001592f5e10 0x0 + 5791243792

它似乎在验证方法上失败了。但是,当我在 xcode 中运行本机演示项目时,它工作正常,所以我很确定问题不在于框架文件,我怀疑我可能遗漏了一些东西

我检查了 API 定义,而 2 个验证标签确实标记了。它们似乎与 GetPublic Key 和 GetJson 有关。两者都不需要接触xamarin IOS,看起来是红鹭

我已将我的解决方案的副本推送到 git hub 上。加密方法是从about页面的按钮通过依赖服务触发到WorldPayClient.cs的IOS实现

https://github.com/Law85/XamarinForms.WorldPayCSEBinding

这也是我为生成 API 定义和 strut sharpie bind --output=WorldpayCSE --namespace=WorldpayCSE --sdk=iphoneos14.5 /Users/lukewinthorpe/Desktop/WorldPay/WorldpayCSE.framework/Headers/* 运行的脚本。 h -scope /Users/lukewinthorpe/Desktop/WorldPay/WorldpayCSE.framework/Headers

任何人都可以帮助我的方式将不胜感激。

谢谢卢克

0 投票
0 回答
41 浏览

unity3d - 如何减少使用 UnityFramework.framework 创建的 DLL 大小?

我已经为生成的 UnityFramework.framework 创建了一个 DLL(使用 Xamarin.iOS 绑定),并且我能够在我现有的 Xamarin.iOS 项目中成功使用这个 DLL。UnityFramework.framework 大小约为 89.4MB,DLL 大小为 20.4MB。为了减少 dll 大小在 Unity 项目中,我应用ASTC block 8X8 compression到我的纹理,并从构建设置中将压缩方法设置为LZ4HC. 这将我的 .framework 大小减少到 76MB。我的问题是通过绑定项目生成的 .dll 。它已从 20MB 增加到 21MB。当我浏览 .dll 文件时,我意识到.text文件大小比以前的版本增加了。

  1. 如何正确减小 .dll 的大小?
  2. .text文件大小增加的原因是什么?
  3. 有没有办法读取位于生成的 .dll 文件中的这个 .text 文件?

请帮我。提前致谢。

0 投票
0 回答
52 浏览

c# - Xamarin:接口和协议继承问题

背景:

  • 我正在使用 Xamarin:使用 Visual Studio for Mac 的表单。
  • 我正在集成 Brother Print SDK v4。
  • 我已成功使用 Objective Sharpie 并调整 ApiDefinitions.cs 和 Structs.cs 文件以使用 v3 SDK。
  • v4 SDK 使用的协议和接口与其前身略有不同。

问题:

我有一个界面:

我有一些代码:

问题:

我的理解是 RJPrintSettings 对象应该与 IBRLMPrintSettingsProtocol “可互换”。但是,我得到以下信息:

CS1503: Argument 2: cannot convert from iosBinding.BRLMRJPrintSettings to iosBinding.IBRLMPrintSettingsProtocol

我已经做了我能想到的一切,但一直无法解决这个问题。有什么建议么?