将网页网址分享到Facebook

时间:2013-02-03 01:57:48

标签: facebook macos cocoa osx-mountain-lion

我尝试与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以我需要的方式共享网页。

2 个答案:

答案 0 :(得分:0)

我查看了您要分享的网站上的源代码,并通过Facebook Object Debugger进行了操作。 Facebook在定义的协议方面非常挑剔,所以我建议您将网址从http://更改为https://,因为安全网址是iTunes决定设置为og:url的网址属性。见here

答案 1 :(得分:0)

我在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;
}