2012-03-12 1 views
8

Như tất cả các bạn có thể biết, vì iOS5 có một khuôn khổ Twitter gốc giúp bạn dễ dàng đăng các tweet từ ứng dụng của mình.Cảnh báo đăng nhập nhanh với khung công tác Twitter trong iOS5?

Có cách nào để nhắc cảnh báo chuyển tiếp người dùng đến ứng dụng cài đặt và yêu cầu tên người dùng và mật khẩu không?

Tôi biết rằng tôi có thể giải quyết vấn đề với đoạn mã sau:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=TWITTER"]]; 

nhưng thats đang không có giấy tờ ..

Cảm ơn trước

Trân Billy (bài viết đầu tiên của tôi trên SO)

+0

Cảnh báo đăng nhập nhanh với khung công tác Twitter trong iOS6: http: // stackoverflow.com/questions/13946062/twitter-framework-cho-ios6-how-to-login-through-settings-from-app – RayofHope

+0

Mã không hoạt động trên iOS 8.2 – David

Trả lời

6

Bạn không cần triển khai điều này, nếu bạn thiết lập tích hợp Twitter của mình để tạo bài đăng trên Twitter và iOS phát hiện có không có tài khoản Twitter nào được thiết lập, nó sẽ tự động thực hiện việc này cho bạn!

Đây là một ảnh chụp màn hình của một trong những ứng dụng của tôi chạy trên iPhone 4S của tôi trên iOS 5.1

Việc loại bỏ các liên kết Preferences là ám chỉ đến hành động tùy chỉnh bởi nhà phát triển, như trong việc kết nối vào menu sở thích của riêng bạn. Điều này không áp dụng bởi vì không chỉ Twitter tích hợp chức năng của iOS 5 mà UIAlertView bật lên để thông báo cho bạn không được nhà phát triển xử lý, nó là một chức năng tự động của iOS.

enter image description here

+0

Cảm ơn bạn đã trả lời, ngay bây giờ tôi đã nhận được thông báo khi cố gắng đăng nhưng khách hàng của tôi muốn có một menu cài đặt riêng biệt với khả năng đăng nhập vào twitter. Có lẽ tôi nên thuyết phục khách hàng của tôi rằng ý nghĩ ban đầu là sai và chỉ sử dụng hành vi "chuẩn" thay thế? –

+0

Điều đó sẽ là tốt nhất. Điều đó không chỉ giúp bạn tiết kiệm rất nhiều công sức, nhưng nó sẽ giữ cho ứng dụng có cảm giác điều kiện hoạt động tốt hơn mà bạn chỉ đơn giản là truy cập vào một khung công tác hiện có. Nếu điều này trả lời câu hỏi của bạn, vui lòng đánh dấu là chính xác. –

0

Đó là không thể, mặc dù nó sẽ tự động yêu cầu người dùng đăng nhập, nếu người dùng không đăng nhập rồi.

Tính đến iOS 5.1 có tính năng đã bị loại bỏ, như đã thấy here

8

Trong iOS5.1, chúng ta nên sử dụng TWTweetComposeViewController để hiển thị hộp thoại từ táo từ chối các ứng dụng sử dụng prefs: root = TWITTER.

Nhưng, tôi không thích hiển thị màn hình tweet và bàn phím
vì vậy tôi đã tìm ra cách để ẩn chúng, nhưng hiển thị màn hình bật lên.

CẬP NHẬT: Apple đã phê duyệt ứng dụng của tôi bằng mẹo này.


enter image description here

TWTweetComposeViewController *viewController = [[TWTweetComposeViewController alloc] init]; 

    //hide the tweet screen 
    viewController.view.hidden = YES; 

    //fire tweetComposeView to show "No Twitter Accounts" alert view on iOS5.1 
    viewController.completionHandler = ^(TWTweetComposeViewControllerResult result) { 
     if (result == TWTweetComposeViewControllerResultCancelled) {    
      [self dismissModalViewControllerAnimated:NO]; 
     } 
    }; 
    [self presentModalViewController:viewController animated:NO]; 

    //hide the keyboard 
    [viewController.view endEditing:YES]; 

    //this approach doesn't work since you can't jump to settings 
// [self dismissModalViewControllerAnimated:NO]; 
+0

Mã của bạn thực sự gửi tweet như thế nào nếu chế độ xem thành phần bị ẩn? – Pwner

2

Ở đây tôi tìm thấy đường đi:

hiển thị tùy chỉnh cảnh báo nếu không có tài khoản twitter đã được thiết lập trên các thiết lập thiết bị của bạn:

if (![TWTweetComposeViewController canSendTweet]) { 
      UIAlertView *alertViewTwitter = [[[UIAlertView alloc] 
      initWithTitle:@"No Twitter Accounts" 
      message:@"There are no Twitter accounts configured. You can add or create a Twitter account in Settings." 
      delegate:self 
      cancelButtonTitle:@"Settings" 
      otherButtonTitles:@"Cancel",nil] autorelease]; 

      [alertViewTwitter show]; 
    } 


- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{ 

      if (buttonIndex==0) { 
       TWTweetComposeViewController *ctrl = [[TWTweetComposeViewController alloc] init]; 
       if ([ctrl respondsToSelector:@selector(alertView:clickedButtonAtIndex:)]) { 
        [(id <UIAlertViewDelegate>)ctrl alertView:alertView 
          clickedButtonAtIndex:0]; 
       } 
       [ctrl release]; 
      } 
    } 

Hy vọng điều này sẽ có ý nghĩa :)

+0

Tôi không quá thích sử dụng nút hủy cho hành động của bạn và đặt nút hủy thực của bạn trong một loạt các tiêu đề nút khác ... Có vẻ như lợi ích duy nhất là đơn giản hóa phương thức clicksButtonAtIndex: của bạn trong khi bạn đang phá vỡ một điểm chung quy ước. –