我正在尝试使用fb分享按钮从我的应用程序向Facebook创建帖子。我希望这篇文章使用applinks链接回应用程序。我不明白如何将数据添加到Facebook网址,因此它知道单击链接时将应用程序定向到的位置。
FBSDKShareLinkContent * content = [[FBSDKShareLinkContent alloc] init];
content.contentURL = [NSURL URLWithString:@"https://fb.me/123456789"];
FBSDKShareButton * button = [[FBSDKShareButton alloc] init];
button.shareContent = content;
[self.view addSubview:button];
这可行,但是我尝试添加到fb网址中断的任何查询都不再与应用程序链接。例如:
content.contentURL = [NSURL URLWithString:@"https://fb.me/123456789?my_view=news"];
这是他的错误方法吗?我也尝试过使用json编码和al_applink_data,但是对原始url的任何更改都会使发布链接指向发送的图像url,而不是应用程序链接。
您实际上是在通过以下流程使用两种不同的Facebook工具:
Facebook用于App Links的过程实际上要复杂一些...不幸的是,它并不像添加URL参数那样简单。以下是其工作原理的概述(源):
<meta property="al:ios:url" content="yourapp://path/to/content" />
当Facebook爬网链接并看到这些标签时,它将链接标记为对App Links启用。您可以将这些标签添加到自己的网站(如果有一个标签,并且指向该标签的链接),或者如果您没有网站,则Facebook提供Mobile Hosting API(看起来您正在使用)。当用户打开此链接时,您的应用程序将启动,并且将为您传递一个类似这样的URL,您的应用程序必须自行处理: yourapp://path/to/content?al_applink_data=JSON_ENCODED_DATA
。不幸的是,重定向到应用程序中的正确位置并不是一个魔术,并且假定您已将应用程序设置为基于URL方案结构显示内容。Facebook提供了一个演练,但是基本上您需要在AppDelegate.m中添加以下内容:
- (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation {
BFURL *parsedUrl = [BFURL URLWithInboundURL:url sourceApplication:sourceApplication];
if ([parsedUrl appLinkData]) {
// this is an applink url, handle it here
NSURL *targetUrl = [parsedUrl targetURL];
[[[UIAlertView alloc] initWithTitle:@"Received link:"
message:[targetUrl absoluteString]
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil] show];
}
...
}
但是,这仅涵盖您通过Facebook进行共享,而不会陷入URL方案深层链接或iOS 9中Apple的新通用链接的混乱之中。如果要处理所有这些问题,除了Facebook App Links,您还可以可以考虑使用Branch.io之类的免费服务(完整披露:我与他们合作真是太棒了),可以为您解决所有技术细节。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句