В разделе Facebook я не могу опубликовать имя, ссылку, описание и изображение на FBLinkShareParams в установленном приложении Facebook.
Я хочу опубликовать имя, linkDescription и изображение на FBLinkShareParams, но не могу сделать это при условии, установленном приложением Facebook, но оно отлично работает в условии, когда приложение Facebook не установлено, когда это делается в FBWebDialogs. Я смог опубликовать params.link только в установленном состоянии приложения Facebook.
Я использовал код, как показано ниже:
#pragma mark - facebook share
//facebook share
- (void)shareLinkinFB{
/* Facebook app is installed*/
FBLinkShareParams *params = [[FBLinkShareParams alloc] init];
params.link = [NSURL URLWithString:@"https://developers.facebook.com/docs/ios/share/"];
params.name= @"Dieheart";
params.picture= [NSURL URLWithString:Str_KoolkatPic];
params.linkDescription=@"A quick and better way to get anything delivered at your doorstep. ";
// If the Facebook app is installed and we can present the share dialog
if ([FBDialogs canPresentShareDialogWithParams:params]) {
[FBDialogs presentShareDialogWithLink:params.link handler:^(FBAppCall *call, NSDictionary *results, NSError *error) { if(error) {
// An error occurred, we need to handle the error
NSLog(@"Error publishing story: %@", error.description);
} else {
// Success
NSLog(@"result %@", results);
}
}];
NSLog(@"Share login page Now");
} else {
/* Facebook app Not installed*/
NSLog(@"Share dialog");
NSString *urlString = [NSString stringWithFormat:@"%@/resources/images/login-logo.png",SERVER_ADDRESS];
NSString *Str_NameLabel;
NSString *Str_Description;
Str_NameLabel=@"testing for idelivery IOS application";
Str_Description=@"Share functionality in progress";
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
Str_NameLabel, @"name",
@"idelivery Town center", @"caption",
Str_Description, @"description",
@"https://www.facebook.com/edeliveryksa", @"link",
urlString, @"picture",
nil];
// Show the feed dialog
[FBWebDialogs presentFeedDialogModallyWithSession:nil parameters:params
handler:^(FBWebDialogResult result, NSURL *resultURL, NSError *error) {
if (error) {
// An error occurred, we need to handle the error
// See: https://developers.facebook.com/docs/ios/errors
NSLog(@"Error publishing story: %@", error.description);
} else {
if (result == FBWebDialogResultDialogNotCompleted) {
// User cancelled.
NSLog(@"User cancelled.");
} else {
// Handle the publish feed callback
NSDictionary *urlParams = [self parseURLParams:[resultURL query]];
if (![urlParams valueForKey:@"post_id"]) {
// User cancelled.
NSLog(@"User cancelled.");
} else {
// User clicked the Share button
NSString *result = [NSString stringWithFormat: @"Posted story, id: %@", [urlParams valueForKey:@"post_id"]];
NSLog(@"result %@", result);
[self postSuccess]; // success vako condn ko lagi banako
}
}
}
}];
}}
- (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation {
BOOL urlWasHandled = [FBAppCall handleOpenURL:url
sourceApplication:sourceApplication
fallbackHandler:^(FBAppCall *call) {
NSLog(@"Unhandled deep link: %@", url);
// Here goes the code to handle the links
}];
return urlWasHandled;
}
// A function for parsing URL parameters returned by the Feed Dialog.
- (NSDictionary*)parseURLParams:(NSString *)query {
NSArray *pairs = [query componentsSeparatedByString:@"&"];
NSMutableDictionary *params = [[NSMutableDictionary alloc] init];
for (NSString *pair in pairs) {
NSArray *kv = [pair componentsSeparatedByString:@"="];
NSString *val =
[kv[1] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
params[kv[0]] = val;
}
return params;
}
- (void)postSuccess{
NSLog(@" post success");
}
Надеюсь, что кто-нибудь сможет мне помочь
1 ответ
Похоже, ты звонишь canPresentShareDialogWithParams:
с реальными параметрами, но когда дело доходит до фактического представления диалога, вы вызываете его с nil
ссылка, которая, вероятно, поэтому ничего не появляется.
Вы должны позвонить presentShareDialogWithParams:clientState:handler:
метод с параметрами, которые вы создали.
[FBDialogs presentShareDialogWithParams:params
clientState:nil
handler:^(FBAppCall *call, NSDictionary *results, NSError *error) {...}];