0

アプリにFacebookの投稿を実装しています。そして、Facebook アカウントに何かを投稿するためのコードを追加します。私のコードは次のとおりです。

    - (void)publishStory
{
 NSLog(@"publish story called .......");

 [FBRequestConnection
  startWithGraphPath:@"me/feed"
  parameters:self.postParams
  HTTPMethod:@"POST"
  completionHandler:^(FBRequestConnection *connection,
                      id result,
                      NSError *error) {
   NSString *alertText;
   if (error) {
    alertText = [NSString stringWithFormat:
                 @"error: domain = %@, code = %d",
                 error.domain, error.code];
   } else {
    alertText = [NSString stringWithFormat:
                 @"Posted action, id: %@",
                 [result objectForKey:@"id"]];
   }
   // Show the result in an alert
   [[[UIAlertView alloc] initWithTitle:@"Result"
                               message:alertText
                              delegate:self
                     cancelButtonTitle:@"OK!"
                     otherButtonTitles:nil]
    show];
  }];
}

-(IBAction)cancelButtonAction
{
 [[self presentingViewController] dismissViewControllerAnimated:YES completion:nil];
}

-(IBAction)shareButtonAction
{
 // Add user message parameter if user filled it in
 if (![self.postMessageTextView.text isEqualToString:@""]) {
  [self.postParams setObject:self.postMessageTextView.text
                      forKey:@"message"];
 }

 // Ask for publish_actions permissions in context
 if ([FBSession.activeSession.permissions
      indexOfObject:@"publish_actions"] == NSNotFound) {
  // No permissions found in session, ask for it
   [FBSession.activeSession reauthorizeWithPublishPermissions:
   [NSArray arrayWithObjects:@"publish_actions",@"publish_stream", nil]
   defaultAudience:FBSessionDefaultAudienceFriends
   completionHandler:^(FBSession *session, NSError *error) {
    if (!error) {
     // If permissions granted, publish the story
     NSLog(@"not error");
     [self publishStory];
    }
   }];
 } else {
  // If permissions present, publish the story
  NSLog(@"In else condition");
  [self publishStory];
 }
}

これは、「iOS 6 には統合された facebook が設定に含まれているため」のコードが多すぎます。しかし、私はiosのtwitter統合のように投稿したいのですが、どうすればそれができますか

4

1 に答える 1

1

投稿には2つの方法があります。

1) FBNativeDialog を使用して投稿します。(FacebookSDK.framework を含む) 2) SLComposeViewController 経由で投稿します。

どちらを使用するかはあなた次第です。AdSupport.framework、Accounts.framework、Social.framework という名前の 3 つのフレームワークを追加する必要があります。最初のものを使用するには、 #import "FacebookSDK/FacebookSDK.h" を含める必要があり、投稿用のコードは次のとおりです。

     UIAlertView *alert=[[UIAlertView alloc] initWithTitle:@"" message:@"" delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil];

 BOOL displayedNativeDialog = [FBNativeDialogs presentShareDialogModallyFrom:self initialText:@"" image:[UIImage imageNamed:@"iossdk_logo.png"] url:[NSURL URLWithString:@"https://developers.facebook.com/ios"]
  handler:^(FBNativeDialogResult result, NSError *error)
 {
   if (error) {
    alert.message=@"Fail posting due to some error!";
    [alert show];
    /* handle failure */
   } else {
    if (result == FBNativeDialogResultSucceeded) {
     alert.message=@"Posted Successfully!";
     [alert show];
     /* handle success */
    } else {
     /* handle user cancel */
    }
   }}];

 if (!displayedNativeDialog) {
  /* handle fallback to native dialog  */
 }

2 つ目は #import "Social/Social.h" が必要で、コードは次のとおりです。

     SLComposeViewController *fbComposer =
 [SLComposeViewController
  composeViewControllerForServiceType:SLServiceTypeFacebook];


 if([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook])
 {
  SLComposeViewControllerCompletionHandler __block completionHandler=
  ^(SLComposeViewControllerResult result){

   [fbComposer dismissViewControllerAnimated:YES completion:nil];

   switch(result){
    case SLComposeViewControllerResultCancelled:
    default:
    {
     NSLog(@"Cancelled.....");

    }
     break;
    case SLComposeViewControllerResultDone:
    {
     NSLog(@"Posted....");
     UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@"Sent"
                                                      message:nil
                                                     delegate:nil
                                            cancelButtonTitle:@"Dismiss"
                                            otherButtonTitles: nil];
     [alert show];
    }
     break;
   }};

  [fbComposer addImage:[UIImage imageNamed:@"iossdk_logo.png"]];
  [fbComposer setInitialText:@"The initial text you want to send"];
  [fbComposer addURL:[NSURL URLWithString:@"https://developers.facebook.com/ios"]];
  [fbComposer setCompletionHandler:completionHandler];
  [self presentViewController:fbComposer animated:YES completion:nil];
 }
于 2012-11-17T05:43:27.903 に答える