Как добавить Apple Wallet Passes с пользовательским именем и QR-кодом в Xamarin.IOS - PullRequest
0 голосов
/ 07 октября 2019

Как я могу добавить пароль Apple Wallet с пользовательским именем пользователя и содержимым QR-кода? Если возможно, можно ли их загрузить с сервера?

Я пытался изменить существующие проходы, но в Xamarin это невозможно сделать.

1 Ответ

0 голосов
/ 08 октября 2019

Итак, прелесть использования Xamarin заключается в том, что у вас есть доступ ко всем нативным API-интерфейсам iOS, доступным для разработчиков Swift, поэтому вы можете делать все в C #, что вы можете в Swift, без необходимости настраивать привязку.

Итак, все, что вы можете сделать с помощью Swift на XCode, вы можете сделать это таким же образом, используя C #. Поэтому для реализации пропусков Apple Wallet вы должны пройти те же процедуры. Процедура немного длинная, поскольку она предназначена только для эмитентов карт, и вам необходимо специальное разрешение, выданное Apple :

Ваше приложение должно включать это право, прежде чем вы сможете использовать этот класс. Для получения дополнительной информации о запросе этого права см. Раздел «Эмитенты карт» по адресу developer.apple.com/apple-pay/.

Кроме того, с здесь :

PKAddPaymentPassViewController требуется ключ доступа com.apple.developer.payment-pass-provisioning для вашего приложения. Плохая новость заключается в том, что никто не может отправлять приложения с таким правом, поскольку для этого требуется специальное разрешение Apple, которое, я считаю, зарезервировано для эмитентов карт, таких как банки и тому подобное. Если вы считаете, что имеете право, вам нужно связаться с Apple напрямую по номеру apple-pay-inquiries@apple.com

Как только вы это сделаете, вам нужно реализовать методы делегата и инициализировать его с помощью конфигурации, как вы можете видеть вкод / ​​картинка ниже (конвертировано из Swift) :

using System;
using CoreGraphics;
using Foundation;
using ObjCRuntime;
using PassKit;
using UIKit;

namespace BlankNativeApp.iOS
{
    public class PKViewController : UIViewController, IPKAddPaymentPassViewControllerDelegate
    {
        public void DidFinishAddingPaymentPass(PKAddPaymentPassViewController controller, PKPaymentPass pass, NSError error)
        {
            // Perform Post Addition Functionality
        }

        public void GenerateRequestWithCertificateChain(PKAddPaymentPassViewController controller, NSData[] certificates, NSData nonce, NSData nonceSignature, [BlockProxy(typeof(NIDActionArity1V173))] Action<PKAddPaymentPassRequest> handler)
        {
            // Do work that needs to be done with certifications
        }

        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            if (!PKAddPaymentPassViewController.CanAddPaymentPass)
            {
                // use other payment method / alert user
            }
            var config = new PKAddPaymentPassRequestConfiguration(PKEncryptionScheme.Ecc_V2);
            var addPaymentPassVC = new PKAddPaymentPassViewController(config, this);
            View.BackgroundColor = UIColor.White;
            Title = "My Custom View Controller";

            var btn = UIButton.FromType(UIButtonType.System);
            btn.Frame = new CGRect(20, 200, 280, 44);
            btn.SetTitle("Click Me", UIControlState.Normal);
            btn.TouchUpInside += (sender, e) => {
                //this.ShowViewController(addPaymentPassVC, (Foundation.NSObject)sender); This line will also work
                this.PresentViewControllerAsync(addPaymentPassVC, true);
            };
            View.AddSubview(btn);
        }
    }
}

Implementation example for Passkit

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...