2015-09-24 24 views
6

Tôi cập nhật Xcode lên 7 và Facebook lên 4.6 sdk.Sau khi cập nhật iOS 9 và Facebook sdk 4.6 cửa sổ đăng nhập không mở

này cảnh báo của tôi:

Warning: Attempt to present <FBSDKContainerViewController: 0x159337700> on <UIAlertController: 0x159262700> whose view is not in the window hierarchy! 

trong dự án của tôi là BitCode là NO - bởi vì nếu tôi biến nó để Có, tôi có lỗi này:

ld:'/Users/MyName/Desktop/MyProjectName/ProjectName/ProjectName/Resources/Frameworks/Fabric.framework/Fabric(Fabric.o)' does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target. for architecture arm64 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

này là phương pháp phân tích cú pháp:

-(void)signInWithFacebookClicked 
{ 
NSArray *permissions = [NSArray arrayWithObjects:@"email",@"user_friends", nil]; 
[PFFacebookUtils logInInBackgroundWithReadPermissions:permissions block:^(PFUser *user, NSError *error) 
{ 
    if (!user) // The user cancelled the Facebook login 
    { 
     NSLog(@"Uh oh. The user cancelled the Facebook login."); 
    } 
    else if (user.isNew) // New user (not stored on DB) - User signed up and logged in through Facebook 
    { 
     [self handleNewUser]; 
    } 
    else if (user) // the user is exist at DB 
    { 
     // the user is exist at DB 
    } 
    else if (error) 
    { 
     // showAlertOfSomethingWentWrong 
    } 
}]; 
} 

đây là FBSDKGraphYêu cầu:

-(void)handleNewUser 
{ 

FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:@{@"fields": @"friends, first_name, gender, last_name, link, name, verified, picture, email"}]; 
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) 
{ 
    NSMutableDictionary *userData = (NSMutableDictionary *)result; 
}]; 

vấn đề của tôi là dòng đó:

[PFFacebookUtils logInInBackgroundWithReadPermissions:permissions block:^(PFUser *user, NSError *error) 

thời gian không bao giờ đi vào khối này trong iPhone, trong mô phỏng tốt công tác này.

+0

tôi nghĩ liên kết này ** http: // stackoverflow.com/a/29637893/4516605 ** có thể giúp bạn: – iSibDev

+0

không hoạt động đối với tôi) -: Tôi chỉnh sửa Câu hỏi –

+1

bạn đã bao giờ tìm thấy giải pháp cho việc này chưa? – joey

Trả lời

0

để bạn thêm NSAppTransportSecurity & LSApplicationQueriesSchemes chìa khóa để info.plist của bạn?

+0

có từ liên kết này: https://developers.facebook.com/docs/ios/ios9 –

+1

trong trình mô phỏng đăng nhập mở Facebook nhưng trong iPhone cửa sổ không mở. –

2

Tôi gặp sự cố tương tự khi tôi đang cố hiển thị cảnh báo đăng nhập ở trên cùng của FBSDKContainerViewController.

Trong cuộc gọi này

- (void)logInWithReadPermissions:(NSArray *)permissions 
      fromViewController:(UIViewController *)fromViewController 
        handler:(FBSDKLoginManagerRequestTokenHandler)handler; 

Facebook giới thiệu bộ điều khiển điểm riêng của nó và nếu bạn không chỉ định fromViewController, "bộ điều khiển xem trên cùng sẽ tự động xác định như tốt nhất có thể."

Trong trường hợp của bạn, có vẻ như Facebook đang cố gắng trình bày trên đầu một cảnh báo đã bị loại bỏ, ngay cả khi đây không phải là cuộc gọi đang được gọi.

+0

Xin chào! Tôi cũng gặp vấn đề tương tự! nhưng trong LogInWithWritePermissions ... Bạn đã sửa nó như thế nào? – rickrvo

+1

@rickrvo - Tôi không có quyền truy cập vào mã của mình nữa, nhưng tôi nghĩ rằng tôi đã chỉ định một fromViewController để Facebook sẽ không phỏng đoán chế độ xem không đúng hoặc tôi đảm bảo cảnh báo tôi đang trình bày không hiển thị nữa. – PastryPup

+1

Tôi đã tìm được cách giải quyết! Vấn đề là loginwithWritePermissions đã được gọi ngay sau một loginWithReadPermissions khác ... Và iOS không có thời gian để quay lại ứng dụng trước khi gọi loginWithWritePermissions để nó có một viewController khác. Khắc phục nhanh là thêm 1 giây trễ trước cuộc gọi WritePermissions để iOS có thể đổi lại ứng dụng và sau đó cuộc gọi thứ hai hoạt động tốt – rickrvo

0

Tôi đã tìm được giải pháp cho điều này, nhờ câu trả lời của @ PastryPup.

Cảnh báo được hiển thị khi cố gắng trình bày bộ điều khiển chế độ xem đăng nhập Facebook ở đầu chế độ xem cảnh báo bị loại bỏ. Tuy nhiên, việc chuyển sang UIAlertController đã khắc phục được sự cố.

Ấn tượng của tôi là nó hoạt động vì UIAlertController là một bộ điều khiển chính thức, và do đó tồn tại trong hệ thống phân cấp khung nhìn ngay cả sau khi nó bị loại bỏ.

Giải pháp là về cơ bản thay thế UIAlertView bằng UIAlertController và gọi [PFFacebookUtils logInInBackgroundWithReadPermissions:permissions block:^(PFUser *user, NSError *error) bên trong hành động mặc định của UIAlerController.

Link on how to implement a UIAlertController

0

Tôi đã thực hiện một số mẹo để thực hiện công việc này. Tôi không biết nếu đó là cách tốt nhất để làm điều đó. Nhưng tôi chỉ thực hiện một boolean đó là sai trước khi hoạt động thực hiện (nút fb được khai thác). Vì vậy, sau khi nó trả về, chỉ cần đặt boolean thành true và có một điều kiện trong ViewDidAppear rằng nếu boolean là true thực hiện segue đến cửa sổ tiếp theo bạn muốn đi. Tôi hy vọng nó sẽ giúp bạn!

Các vấn đề liên quan