簡體   English   中英

使用 UIActivityViewController 感到困惑

[英]Confused using UIActivityViewController

你能幫我理解什么時候應該使用UIActivityViewController 我有一個按鈕,用於共享有關我的應用程序的通用信息(類似於“我喜歡這個應用程序”,帶有鏈接和圖像)。 我的舊代碼是:

NSMutableDictionary *params = [NSMutableDictionary dictionary];
[params setObject:picture forKey:@"picture"];
[params setObject:link forKey:@"link"];
[params setObject:@"I like MY app!" forKey:@"caption"];
[params setObject:@"I am now using MY iPhone app." forKey:@"description"];
[params setObject:linkToTheIcon forKey:@"icon"];
[params setObject:@"including link" forKey:@"type"];
[[FacebookConnection instance] feedLink:params andDelegate:self];

現在我想使用UIActivityViewController但我有點困惑如何將所有這些參數傳遞給它。 或者我應該以其他方式做事?

補充:所以我明白我需要靜默發布程序。 您能否指導我使用 iOS 6 功能(使用內置 FB 帳戶編輯​​)完成靜默發布過程。 現在我不明白如何檢查設備上是否存在 FB 帳戶,如果不是如何提示創建它? ACAccount 存儲類中有一個方法– requestAccessToAccountsWithType:options:completion:訪問帳戶。 但是,如果帳戶不存在,則會返回錯誤。 提前謝謝了。

您首先需要繼承 UIActivity。

然后你需要覆蓋某些方法,包括用於設置圖標的 activityImage 和用於執行操作的 performActivity 。

如果不是靜默執行操作,您首先需要自定義活動的進一步用戶交互和信息(例如,標准 UIActivity 的 Twitter 帖子),您應該覆蓋 activityViewController 而不是 performActivity。

在您對 UIActivity 進行子類化(例如 MyActivity)之后,您應該創建 MyActivity 的一個實例,並將其設置為您傳遞給 initWithActivityItems:applicationActivities: 的 applicationActivities 數組的一個元素。

查看UIActivity 的文檔,了解在子類化和圖標要求時需要覆蓋的內容。

希望這有所幫助

在您的情況下,很明顯您不應該使用UIActivityViewController因為您想在 Facebook 上而不是在 twitter 或其他任何地方發帖,對吧? 首先,您需要訪問用戶的帳戶。 你這樣做:

-(void)requestBasicPermissionsForFacebookAccount {
    ACAccountType * facebookAccountType = [self.accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook];
    NSArray * permissions = @[@"email"];
    NSDictionary * options = @{ACFacebookAppIdKey : kFacebookAppId, ACFacebookPermissionsKey : permissions, ACFacebookAudienceKey : ACFacebookAudienceEveryone};
    FacebookAccountManager * fbMgr = [[FacebookAccountManager alloc] init];
    [self.accountStore requestAccessToAccountsWithType:facebookAccountType options:options completion:^(BOOL granted, NSError *error) {
        if (granted) {
            NSArray * accounts = [self.accountStore accountsWithAccountType:facebookAccountType];
            fbMgr.account = [accounts lastObject];
            fbMgr.isBasicPermissionsGranted = YES;
            [self.accountManagers addObject:fbMgr];
            NSLog(@"granted!");
        }
        else {
            fbMgr.account = nil;
            fbMgr.isBasicPermissionsGranted = NO;
            switch ([error code]) {
                case 1:
                    [self showErrorAlertWithMessage:@"Unknown error occured, try again later!"];
                    break;
                case 3:
                    [self showErrorAlertWithMessage:@"Authentication failed, try again later!"];
                     break;
                case 6:
                    [self showErrorAlertWithMessage:@"Facebook account does not exists. Please create it in Settings and come back!"];
                     break;
                 case 7:
                    [self showErrorAlertWithMessage:@"Permission request failed. You won't be able to share information to Facebook"];
                     break;
                default:
                    break;
            }
            NSLog(@"error is: %@", error);
        }
    }];
}

如果帳戶不存在,您應該提示用戶在設置中創建它,然后再次嘗試獲取基本權限。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM