0

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.5iOS 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 
+0

例外/スタックトレース(ネイティブおよび/または管理)とは何ですか? – SushiHangover

+0

VSの出力ログが開始されません。 *「fbloginios.iOS」を「iPhone」に起動します... *アプリは終了しました。 私は、macのデバイスログで質問を更新しました。ありがとう。 – Nitish

+0

デバイスコンソール:https://developer.xamarin.com/guides/ios/deployment,_testing,_and_metrics/debugging_in_xamarin_ios/#Accessing_the_Console – SushiHangover

答えて

1

私は、この問題の解決策を見つけた:

更新 デバイスログからのクラッシュレポートは次のとおり。問題はinfo.plistにあります。 SDK 4.6.0とのInfo.plist LSApplicationQueriesSchemesタグ内の要件上記でのみです:

<key>LSApplicationQueriesSchemes</key> 
<array> 
     <string>fbapi</string> 
     <string>fb-messenger-api</string> 
     <string>fbauth2</string> 
     <string>fbshareextension</string> 
</array> 

私はSDKの古いバージョンごとに要件を追加して、それが問題を引き起こしていました。私はxamarin's official recipeに従っていましたが、まだ古いコードがあります。それは似たような問題に遭遇する人を助けることを望みます。

関連する問題