我正在尝试邀请Facebook用户试用我的iOS应用程序(尚未在商店中使用,尚未完成)。
我使用facebook API对用户进行身份验证,然后尝试使用以下代码:
- (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.");
}
}}];
}
但是,当我选择要向其发送邀请的用户然后点击发送。什么都没发生。我收到“请求已发送”。通过NSLog,但我的朋友没有收到它。
有什么想法吗?
答案 0 :(得分:4)
我注意到通知消息只出现在Facebook App和Android / iOS中,但网络用户看不到它,我希望它不是来自Facebook的实现?另外,为了确保成功发送您的邀请,您必须解析resultURL查询。
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;
}
答案 1 :(得分:0)
你什么时候填写params?
我知道如果你发送一个空白的facebook用户名作为收件人,FB API会发送一个完整的动作
答案 2 :(得分:0)
您如何知道请求未与其他用户联系? 您必须知道他们不会收到任何通知,他们可以通过转到this链接访问它:
您的应用中必须有一个Facebook应用作为带有画布页面的平台。然后用户将收到通知。
答案 3 :(得分:0)
它总是取决于您的应用所使用的平台。例如:如果您的应用程序仅在移动设备上可用,则受邀的朋友将仅在其手机上看到该请求,而不是在facebook.com上。如果你在facebook.com上也有一个画布应用程序,它也会出现在facebook.com上。
您可以在有关应用发送的请求的“接收体验”[1]的文档中阅读有关它的更多信息。
[1] https://developers.facebook.com/docs/games/requests/v2.0#receive