2013-04-22 15 views
8

Próbuję zaprosić użytkowników na Facebooku, aby wypróbowali moją aplikację na iOS (której jeszcze nie ma w sklepie, jeszcze jej nie ukończyłem).Zaproś użytkowników Facebooka z aplikacji na iOS na Facebooku: zaproszenie nie jest wysyłane

używam facebook API do uwierzytelniania użytkownika, a następnie spróbuj użyć następującego kodu:

- (void)shareWithFriends:(id)sender 
{ 
    UIAlertView *alert = [[UIAlertView alloc] 
          initWithTitle:@"Invite Friends" 
          message:@"If you enjoy using this app, would you mind taking a moment to invite a few friends that you think will also like it?" 
          delegate:self 
          cancelButtonTitle:@"No Thanks" 
          otherButtonTitles:@"Tell Friends!", nil]; 
    [alert show]; 
} 

- (void)alertView:(UIAlertView *)alertView 
didDismissWithButtonIndex:(NSInteger)buttonIndex { 
    if (buttonIndex == 0) { 
     // User has clicked on the No Thanks button, do not ask again 
     NSLog(@"Chitty user says he doesn't wanna share"); 
    } else if (buttonIndex == 1) { 
     // User has clicked on the Tell Friends button 
     [self performSelector:@selector(sendRequest) withObject:nil afterDelay:0.5]; 
    } 
} 

- (void)sendRequest { 
    // Display the requests dialog 

    NSMutableDictionary* params = [NSMutableDictionary dictionaryWithObjectsAndKeys:nil]; 
    [FBWebDialogs presentRequestsDialogModallyWithSession:nil 
                message:[NSString stringWithFormat:@"Try this app, brah!"] 
                title:nil 
               parameters:params 
                handler:^(FBWebDialogResult result, NSURL *resultURL, NSError *error) { 
                 if (error) { 
                  // Case A: Error launching the dialog or sending request. 
                  NSLog(@"Error sending request."); 
                 } else { 
                  if (result == FBWebDialogResultDialogNotCompleted) { 
                   // Case B: User clicked the "x" icon 
                   NSLog(@"User canceled request."); 
                  } else { 
                   NSLog(@"Request Sent."); 
                  } 
                 }}]; 


} 

Jednak, kiedy wybrać użytkownikom, którzy Chcę wysłać zaprasza, a następnie kliknij Wyślij. Nic się nie dzieje. Dostaję "Żądanie wysłane". przez NSLog, ale mój znajomy go nie otrzymuje.

Wszelkie pomysły?

Odpowiedz

0

Kiedy wypełniasz parametry?

wiem API FB uprzejmie wysyła wypełniony działania jeśli wysłać pustego Facebook Nazwa użytkownika jako odbiorcy

4

zauważyłem, że powiadomienie przychodzi tylko w Facebook App zarówno Android/iOS, jednak użytkownik internetowy może” t widzisz to, mam nadzieję, że nie jest to implementacja z Facebooka? Aby upewnić się, że twoje inviation (s) zostały pomyślnie wysłane, musisz przeanalizować wynikowe zapytanieURL.

NSDictionary *parameters = @{@"to":@""}; 

[FBWebDialogs presentRequestsDialogModallyWithSession:nil 
                 message:SL_FB_INVITE_DESCRIPTION 
                 title:SL_FB_INVITE_TITLE 
                parameters:parameters 
                 handler:^(FBWebDialogResult result, NSURL *resultURL, NSError *error) 
     { 
      if(error) 
      { 
       NSLog(@"Some errorr: %@", [error description]); 
       UIAlertView *alrt = [[UIAlertView alloc] initWithTitle:@"Invitiation Sending Failed" message:@"Unable to send inviation at this Moment, please make sure your are connected with internet" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil]; 
       [alrt show]; 
       [alrt release]; 
      } 
      else 
      { 
       if (![resultURL query]) 
       { 
        return; 
       } 

       NSDictionary *params = [self parseURLParams:[resultURL query]]; 
       NSMutableArray *recipientIDs = [[[NSMutableArray alloc] init] autorelease]; 
       for (NSString *paramKey in params) 
       { 
        if ([paramKey hasPrefix:@"to["]) 
        { 
         [recipientIDs addObject:[params objectForKey:paramKey]]; 
        } 
       } 
       if ([params objectForKey:@"request"]) 
       { 
        NSLog(@"Request ID: %@", [params objectForKey:@"request"]); 
       } 
       if ([recipientIDs count] > 0) 
       { 
        //[self showMessage:@"Sent request successfully."]; 
        //NSLog(@"Recipient ID(s): %@", recipientIDs); 
        UIAlertView *alrt = [[UIAlertView alloc] initWithTitle:@"Success!" message:@"Invitation(s) sent successfuly!" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil]; 
        [alrt show]; 
        [alrt release]; 
       } 

      } 
     } 
                friendCache:nil]; 

- (NSDictionary *)parseURLParams:(NSString *)query 
{ 
    NSArray *pairs = [query componentsSeparatedByString:@"&"]; 
    NSMutableDictionary *params = [[[NSMutableDictionary alloc] init] autorelease]; 
    for (NSString *pair in pairs) 
    { 
     NSArray *kv = [pair componentsSeparatedByString:@"="]; 

     [params setObject:[[kv objectAtIndex:1] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding] 
        forKey:[[kv objectAtIndex:0] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; 
    } 

    return params; 
} 
0

Skąd wiadomo, że wniosek nie dotarł do innych użytkowników? Musisz wiedzieć, że nie otrzymają żadnego powiadomienia, mogą uzyskać do niego dostęp, przechodząc pod numer this:

Musisz mieć aplikację Facebook w swojej aplikacji jako platformę ze stroną z płótna. Następnie użytkownicy otrzymają powiadomienie.

0

To zawsze zależy od platformy, na której jest uruchomiona aplikacja. Na przykład: jeśli masz aplikację, która jest dostępna tylko na urządzeniach mobilnych, zaproszeni przyjaciele będą widzieć tę prośbę tylko na swoich telefonach, a nie na facebook.com. Jeśli masz również aplikację na facebook.com, pojawi się również na facebook.com.

Możesz przeczytać więcej na ten temat w dokumentacji o "Otrzymaniu doświadczenia" [1] w Zapytaniach wysłanych przez aplikacje.

[1] https://developers.facebook.com/docs/games/requests/v2.0#receive

Powiązane problemy