1

我尝试与 Facebook 共享一个网页 url NSSharingServicePicker,但它出现在我的 FB 墙上不是作为网页 url(带有描述等),而是像一个链接。

我的代码非常简单。

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

4

2 回答 2

0

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

于 2013-02-12T04:56:40.627 回答
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;
}
于 2013-02-12T09:43:16.363 回答