我们正在尝试在Xamarin iOS移动应用程序中实现一个简单(或我认为如此)的Facebook登录按钮。我已经安装了Xamarin.Facebook.iOS程序包,然后执行以下步骤:
FBSDKLoginButton
btnLogin.Permissions = new string[] { "email" }
<dict>
<key>keychain-access-groups</key>
<array>
<string>$(AppIdentifierPrefix)[appname]</string>
</array>
</dict>
这足以使一切在模拟器中正常工作,但是当我将其部署到TestFlight并安装到物理设备中时,facebook按钮打开模式,重定向到本机应用程序,我可以在其中批准登录,关闭Facebook应用程序,然后返回到模式。在模拟器中,模态关闭并且我已登录,但是在物理设备(iOS 13.5上的iPhone 11)上,模态只是坐在那里,而我没有登录。手动关闭模态窗口不会触发btnLogin.Completed
事件。
如果我快速浏览iOS原生的官方Facebook SDK文档(迅速),则有iOS 13所需的SceneDelegate更新的一些具体提及:https : //developers.facebook.com/docs/app-events/getting-started- app-events-ios /。我感觉这是相关的,但是我找不到运气如何在Xamarin iOS / C#中完成此功能的任何示例。我对快速的语言不太熟悉,无法将其翻译成可以在我的应用程序中使用的语言。
如果您使用的是iOS 13或更高版本,请在SceneDelegate中添加以下方法:
// SceneDelegate.swift
func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) { guard let url = URLContexts.first?.url else { return } ApplicationDelegate.shared.application( UIApplication.shared, open: url, sourceApplication: nil, annotation: [UIApplication.OpenURLOptionsKey.annotation] ) }
有没有人能在iOS 13+设备上让Facebook SDK登录按钮正常运行,并乐于分享您的成就吗?
更新:
经过更多的挖掘之后,我觉得这与在物理设备上的联系少了,而与Safari登录和本机Facebook应用程序登录的联系更多。不幸的是,无法在模拟器上测试本地FB登录,并且我正在使用Cloud mac,因此无法直接在设备上进行调试。看来我需要继续推动构建以进行测试,以便进行故障排除和测试。
所以花了一些时间,但我终于使它起作用了。下面的代码更新:
AppDelegate.cs
更新FinishedLaunching方法:
[Export ("application:didFinishLaunchingWithOptions:")]
public bool FinishedLaunching (UIApplication application, NSDictionary launchOptions)
{
// Override point for customization after application launch.
// If not required for your application you can safely delete this method
Facebook.CoreKit.ApplicationDelegate.SharedInstance.FinishedLaunching(application, launchOptions);
return true;
}
SceneDelegate.cs
添加以下方法(在撰写本文时,默认情况下不包括在新的Xamarin iOS项目中):
[Export("scene:openURLContexts:")]
public void OpenUrlContexts(UIScene scene, NSSet<UIOpenUrlContext> urlContexts)
{
var urlString = urlContexts.AnyObject.Url;
Facebook.CoreKit.ApplicationDelegate.SharedInstance.OpenUrl(
UIApplication.SharedApplication,
urlString,
null,
UIApplication.LaunchOptionsUrlKey
);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句