【问题标题】:Sharing web page url to Facebook将网页网址分享到 Facebook
【发布时间】:2013-02-03 01:57:47
【问题描述】:

我尝试将带有NSSharingServicePicker 的网页网址分享到 Facebook,但它出现在我的 FB 墙上不是作为网页网址(带有描述等),而是作为链接。

我的代码很简单。

- (IBAction)share:(id)sender
{
    NSURL* url = [NSURL URLWithString:@"http://itunes.apple.com/us/app/travel-route-planner/id504536611"];

    NSSharingServicePicker *sharingServicePicker = [[NSSharingServicePicker alloc] initWithItems:[NSArray arrayWithObjects:url, nil]];
    sharingServicePicker.delegate = self;

    [sharingServicePicker showRelativeToRect:[shareButton bounds]
                                      ofView:shareButton
                               preferredEdge:NSMinYEdge];
}

我知道这是可以做到的。
Safari 以我需要的方式共享网页。

【问题讨论】:

  • 您是否尝试过添加图片? Safari 始终包含您正在共享的网站的缩略图。也许这会改变一些东西?我只通过 Facebook SDK 分享到 Facebook。如果我没记错的话,什么改变了分享的方式。这有意义吗?
  • 没有帮助。通常图像和描述是通过 Graph API 从网页中获取的。
  • 您是否尝试过将 URL 作为 NSString 而不是 NSURL 传递?
  • 尝试将 msg 作为第一项传递,即。 [NSArray arrayWithObjects: msg, url, nil]
  • 尝试为 Facebook 服务实现一个 NSSharingServiceDelegate 并将-sharingService:sourceWindowForShareItems:sharingContentScope 中的sharingContentScope 设置为NSSharingContentScopeFull。见developer.apple.com/library/mac/#documentation/AppKit/Reference/…。

标签: facebook macos cocoa osx-mountain-lion


【解决方案1】:

我查看了您尝试共享的网站上的源代码,并通过Facebook Object Debugger 运行它。 Facebook 对定义的协议非常挑剔,因此我建议将您的 URL 从 http:// 更改为 https://,因为安全 URL 是 iTunes 决定将其设置为 og:url 属性的。见here:

【讨论】:

  • 没有帮助。对不起。我在 Safari 中看到的网页像图像一样共享,消息文本中没有 url,但在我的情况下,网页 url 始终在消息文本中。
【解决方案2】:

我在 Apple Dev 论坛上找到了答案。

您需要使用以下 NSSharingServiceDelegate 方法将图像添加到 NSURL

- (NSRect) sharingService: (NSSharingService *) sharingService
sourceFrameOnScreenForShareItem: (id<NSPasteboardWriting>) item
{
    if([item isKindOfClass: [NSURL class]])
    {
        //return a rect from where the image will fly
        return NSZeroRect;
    }

    return NSZeroRect;
}

- (NSImage *) sharingService: (NSSharingService *) sharingService
 transitionImageForShareItem: (id <NSPasteboardWriting>) item
                 contentRect: (NSRect *) contentRect
{
    if([item isKindOfClass: [NSURL class]])
    {

        return [NSImage imageNamed:@"image.png"];
    }

    return nil;
}

不要忘记为您的 NSSharingService 设置委托

- (id < NSSharingServiceDelegate >)sharingServicePicker:(NSSharingServicePicker *)sharingServicePicker delegateForSharingService:(NSSharingService *)sharingService
{
    return self;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-08
    • 1970-01-01
    • 1970-01-01
    • 2011-06-25
    相关资源
    最近更新 更多