Преобразование кода в следующем быстром примере в C # (Xamarin), чтобы уведомить приложение о получении токена Paypal внутри SFSafariViewController, но при этом метод не запускается.
https://github.com/paypal/paypal-here-sdk-ios-distribution/blob/master/SampleApp/PPHSDKSampleApp/InitializeViewController.swift
Преобразовал swift в C # следующим образом, но после входа пользователя в PayPal и получения токена Safari не закрывается для запуска SetupMerchant ()
UrlSchemes также установлен на retailsdksampleapp, чтобы соответствовать образцу приложения swift от PayPal.
SafariDelegate safariDelegate = new SafariDelegate(this);
NSNotificationCenter.DefaultCenter.AddObserver(new NSString("kCloseSafariViewControllerNotification"), safariDelegate.SetupMerchant);
void loadBrowser()
{
var url = new NSUrl("https://paypalauth.herokuapp.com/toPayPal/" + Application.paypalEnvironment + "?returnTokenOnQueryString=true");
var svc = new SFSafariViewController(url);
svc.Delegate = safariDelegate;
this.PresentViewController(svc, true, null);
}
public class SafariDelegate : SFSafariViewControllerDelegate
{
ViewController _controller = null;
public SafariDelegate(ViewController controller)
{
_controller = controller;
}
public void SetupMerchant(NSNotification notification)
{
// Dismiss the SFSafariViewController when the notification of token has been received.
this._controller.PresentedViewController?.DismissViewController(true, () => { });
// Grab the token(s) from the notification and pass it into the merchant initialize call to set up
// the merchant. Upon successful initialization, the 'Connect Card Reader' button will be
// enabled for use.
var accessToken = notification.Object.ToString();
}
}
При запуске примера приложения swift из Paypal оно закрывает браузер (SFSafariViewController) после входа в систему и запускает SetupMerchant (), но не в коде C #. Возможно, отсутствует шаг или неверное преобразование кода.