iOS-facebook邀请

facebook的邀请触发逻辑
1.点击自定义邀请按钮,运行登录,当用户已经登录,则会自动变为授权。
2.当登录完成以后,调用获取好友信息的方法
3.当获取到好友以后,取出需要的信息,放入到自定义布局页面,并调出自定义的好友邀请页面
4.当点击自定义的邀请界面的确定按钮传入处理过后的id数组,触发facebook的邀请,此时弹出的页面的邀请人信息就是你传过来的id
5.当邀请过后会返回被邀请的userid

坑坑坑坑坑坑
一次只能邀请50个用户

//稍微修改下下面方法,即可获得50个不同的用户
  NSMutableArray *date = [[NSMutableArray alloc]initWithArray:friend1];
 if (date.count > 50) {
      NSMutableSet *randomSet = [[NSMutableSet alloc] init];
      while ([randomSet count] < 50) {
          int r = arc4random() % [date count];
          [randomSet addObject:[date objectAtIndex:r]];
      }
      NSArray *randomArray = [randomSet allObjects];
      [date removeAllObjects];
      [date addObjectsFromArray:randomArray];
 }

//登录stroyboard登录按钮,调用登录方法
- (IBAction)denglu:(id)sender {
    FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
    [login logOut];
    [login
     logInWithReadPermissions: @[@"public_profile", @"email", @"user_friends"]
     fromViewController:self
     handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
         if (error) {
             NSLog(@"Process error");
             [self showAlertView:@"Notice" Message:@"Login Failed"];
         } else if (result.isCancelled) {
             NSLog(@"Cancelled");
         } else {
             NSLog(@"Logged in");
               /*
              1.获取各种好友信息
              2.将信息放入自定义邀请页面
              3.将好友id传入邀请中
              */
             //  此处调用获取好友信息方法
             [self getFriendID];
         }
     }];
    
}

//获取好友信息的方法
-(void)getFriendID {
    NSDictionary *parameters = @{
                                 @"fields": @"id,name,picture.width(100).height(100)",
                                 @"limit" : @"1000"
                                 };
    FBSDKGraphRequest *friendsRequest1       = [[FBSDKGraphRequest alloc] initWithGraphPath:@"/me/invitable_friends"
                                                                                parameters:parameters];
    FBSDKGraphRequestConnection *connection1 = [[FBSDKGraphRequestConnection alloc] init];
    [connection1 addRequest:friendsRequest1
          completionHandler:^(FBSDKGraphRequestConnection *innerConnection, NSDictionary *result, NSError *error) {
              if (error) {
                  NSLog(@"error");
              }
              
              if (result) {
                  //此处调用自定义好友邀请界面,在自定定义好友邀请界面确定按钮中,调用facebook方法并传值
                 
                  /*
                   1.将获取到的所有信息分类取出放入自定义邀请界面(如果要自定义选择好友页面到118行将recipientSuggestions替换成recipients即可)
                   2.获取到的好友信息要转码(转码方式 [friend dataUsingEncoding:NSASCIIStringEncoding];)
                   3.将转码后的id存入数组,将数组给到邀请
                   4.在自定义的邀请界面的确定按钮中,调用facebook的邀请,并把处理过的id放入数组传入
                   */
                  
                   //下面的事例是点击自定义邀请界面按钮,将选中的id处理后放入数组传入给邀请方法
                  //arrFriend指的是获取到的用户信息
                  NSArray *arrFriend = [result objectForKey:@"data"];
                  //接下来自定义邀请界面
                  //自定义界面调用下一个邀请接口
              }
          }];
    [connection1 start];

}

//邀请接口
-(void)InvitationFriendTitle:(NSString *)title message:(NSString *)message friendsId:(NSArray *)friendsId{
    FBSDKGameRequestContent *gameRequestContent =[[FBSDKGameRequestContent alloc] init];
    // Look at FBSDKGameRequestContent for futher optional properties
    //邀请的详情说明文本
    gameRequestContent.message =message;
    //邀请的头部标题,一般就写邀请
    gameRequestContent.title = title;
    //recipientSuggestions 传入指定的userid就可以显示对应的好友,不搭建自定义界面的时候使用
    //recipients 传入id直接可点击发送,搭建自定义好友选择界面使用
    gameRequestContent.recipients= friendsId;
    // Assuming self implements 
    [FBSDKGameRequestDialog showWithContent:gameRequestContent delegate:self];
}

//邀请结束后走下面的代理方法
- (void)gameRequestDialog:(FBSDKGameRequestDialog *)gameRequestDialog didCompleteWithResults:(NSDictionary *)results ;

你可能感兴趣的:(iOS-facebook邀请)