2

いつ使用すべきかを理解するのを手伝ってくれませんか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:には、アカウントにアクセスするためのメソッドがあります。ただし、アカウントが存在しない場合はエラーが返されます。よろしくお願いします。

4

2 に答える 2

1

まず、UIActivityをサブクラス化する必要があります。

次に、アイコンを設定するためのactivityImageやアクションを実行するためのperformActivityなど、特定のメソッドをオーバーライドする必要があります。

アクションをサイレントに実行する代わりに、最初にカスタムアクティビティのユーザーインタラクションと情報がさらに必要な場合(たとえば、標準UIActivityのTwitter投稿など)、performActivityではなくactivityViewControllerをオーバーライドする必要があります。

UIActivityをサブクラス化した後(たとえば、MyActivityなど)、MyActivityのインスタンスを作成し、それをinitWithActivityItems:applicationActivities:に渡すapplicationActivities配列の要素にする必要があります。

サブクラス化時にオーバーライドする必要があるものとアイコンの要件については、 UIActivityのドキュメントを参照してください。

これが少し役立つことを願っています

于 2012-11-17T17:23:29.200 に答える
1

UIActivityViewControllerあなたの状況では、Twitterやその他の場所ではなくFacebookに投稿したいので、使用すべきではないことは明らかですよね?まず、ユーザーのアカウントにアクセスする必要があります。あなたはこのようにこれをします:

-(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);
        }
    }];
}

アカウントが存在しない場合は、設定でアカウントを作成するようにユーザーに促してから、基本的なアクセス許可の取得を再試行する必要があります。

于 2012-11-22T09:53:44.247 に答える