iOS用のxamarin facebook sdkをAzure Mobileアプリバックエンドとともに共有コードとフォームUIを持つxamarinプロジェクトで使用しています。私はこのsdkを使ってクライアントフローログインをしようとしていますが、できません。アプリが起動するとすぐにアプリがクラッシュします。しかし、アンドロイド側で同様のアプローチを使用している場合(xamarin facebook sdk for androidを使用)、すべてが優れています。私のコードは、Adrian Hallが彼のbookで提案したものに基づいています。それはシミュレータで正常に動作し、ログインのためのWebビューを開きますが、デバイスで失敗します。 iOSのプロジェクト内のコードを以下に示します。iOS用のXamarin facebook sdkがアプリクラッシュの原因となる
public class iOSLoginProvider : ILoginProvider
{
public async Task LoginAsync(MobileServiceClient client)
{
var accessToken = await LoginFacebookAsync();
var zumoPayload = new JObject()
{
["access_token"] = accessToken
};
await client.LoginAsync("facebook", zumoPayload);
}
public UIViewController RootView => UIApplication.SharedApplication.KeyWindow.RootViewController;
private TaskCompletionSource<string> fbtcs;
public async Task<string> LoginFacebookAsync()
{
fbtcs = new TaskCompletionSource<string>();
var loginManager = new LoginManager();
loginManager.LogInWithReadPermissions(new[] { "public_profile" }, RootView, LoginTokenHandler);
return await fbtcs.Task;
}
private void LoginTokenHandler(LoginManagerLoginResult loginResult, NSError error)
{
if (loginResult.Token != null)
{
fbtcs.TrySetResult(loginResult.Token.TokenString);
}
else
{
fbtcs.TrySetException(new Exception("Facebook Client Flow Login Failed"));
}
}
}
私は、Info.plistファイルに要件の権限を追加したと同様にFacebookアプリをホワイトリストに登録しています。私がLoginFacebookAsync()
とLoginTokenHandler()
をコメントアウトすると、アプリはうまく動作します。コードは完全ではないが起動するため、ログインはしませんが完全に起動します。しかし、これらのメソッドがコード化されるとすぐに、アプリケーションは起動に失敗します。私は2つのデバイス(iOS 9.3.5とiOS 10.3.3)とシミュレータでコンパイルを試みました。
Incident Identifier: 8AEC3E39-8670-4C6B-A87E-9B2C014B1A6E
CrashReporter Key: ce11b8d9b291dbec2269487cc1ef04b41d8b4d35
Hardware Model: iPhone6,1
Process: fbloginios.iOS [646]
Path: /private/var/containers/Bundle/Application/CFE5351F-4DE4-4822-9B42-8C9CE909D905/fbloginios.iOS.app/fbloginios.iOS
Identifier: com.yourcompany.fbloginios
Version: 1.0 (1.0)
Code Type: ARM-64 (Native)
Role: Foreground
Parent Process: launchd [1]
Coalition: com.yourcompany.fbloginios [543]
Date/Time: 2017-11-03 08:58:39.0078 -0400
Launch Time: 2017-11-03 08:58:38.5767 -0400
OS Version: iPhone OS 10.3.3 (14G60)
Report Version: 104
Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception Note: EXC_CORPSE_NOTIFY
Triggered by Thread: 0
Application Specific Information:
abort() called
Filtered syslog:
None found
Last Exception Backtrace:
0 CoreFoundation 0x18a332fe0 __exceptionPreprocess + 124
1 libobjc.A.dylib 0x188d94538 objc_exception_throw + 56
2 fbloginios.iOS 0x101596494 0x1000c8000 + 21816468
3 fbloginios.iOS 0x1015cfbd8 0x1000c8000 + 22051800
4 libobjc.A.dylib 0x188d95418 CALLING_SOME_+initialize_METHOD + 24
5 libobjc.A.dylib 0x188d95684 _class_initialize + 612
6 libobjc.A.dylib 0x188d9d4b4 lookUpImpOrForward + 228
7 libobjc.A.dylib 0x188da8478 _objc_msgSend_uncached + 56
8 fbloginios.iOS 0x1000ef02c 0x1000c8000 + 159788
9 fbloginios.iOS 0x1000effd0 0x1000c8000 + 163792
10 fbloginios.iOS 0x1017281a8 0x1000c8000 + 23462312
11 fbloginios.iOS 0x1000f00d4 0x1000c8000 + 164052
12 libdyld.dylib 0x18921d59c start + 4
例外/スタックトレース(ネイティブおよび/または管理)とは何ですか? – SushiHangover
VSの出力ログが開始されません。 *「fbloginios.iOS」を「iPhone」に起動します... *アプリは終了しました。 私は、macのデバイスログで質問を更新しました。ありがとう。 – Nitish
デバイスコンソール:https://developer.xamarin.com/guides/ios/deployment,_testing,_and_metrics/debugging_in_xamarin_ios/#Accessing_the_Console – SushiHangover