ios - 如何为我的自定义 Open Graph 故事选择要发布的灵活句子结构?

标签 ios facebook facebook-graph-api facebook-opengraph

我已遵循有关使用适用于 iOS 的 Facebook SDK 发布自定义 Open Graph 故事的教程:https://developers.facebook.com/docs/ios/open-graph/

我还在这里阅读了有关灵活句子结构的文档:https://developers.facebook.com/docs/opengraph/creating-custom-stories/#variations

我的问题是,在代码中如何以及在何处指定要使用的特定句子结构?我想发布“John Doe 做了一份牛排”而不是“John Doe 做了一顿饭”。我想使用一对一句子结构而不是一对一无宾语结构。

// Create an object
id<FBGraphObject> object =
[FBGraphObject openGraphObjectForPostWithType:@"myapp:meal"
                                        title:@"Steak"
                                        image:@"http://i.imgur.com/g3Qc1HN.png"
                                          url:@"https://example.com/link/"
                                  description:@"Juicy and medium-rare"];

// Create an action
id<FBOpenGraphAction> action = (id<FBOpenGraphAction>)[FBGraphObject graphObject];

// Link the object to the action
[action setObject:object forKey:@"meal"];

// Check if the Facebook app is installed and we can present the share dialog
FBOpenGraphActionShareDialogParams *params = [[FBOpenGraphActionShareDialogParams alloc] init];
params.action = action;
params.actionType = @"myapp:cook";

// If the Facebook app is installed and we can present the share dialog
if([FBDialogs canPresentShareDialogWithOpenGraphActionParams:params])
{
    // Show the share dialog
    [FBDialogs presentShareDialogWithOpenGraphAction:action
                                          actionType:@"myapp:cook"
                                 previewPropertyName:@"recipe"
                                             handler:
     ^(FBAppCall *call, NSDictionary *results, NSError *error)
    {
        if(error) {
            // There was an error
            NSLog(@"Error publishing story: %@", error.description);
        } else {
            // Success
            NSLog(@"result %@", results);
        }
    }];
}

最佳答案

我也在尝试解决这个问题,这就是我到目前为止理解的原因:

  • 默认情况下,所有帖子均以过去时态发布。 “用户名吃了一个披萨”
  • 如果你想使用现在时,你必须像这样设置“end_time”属性:

    [ Action 设置结束时间:@"2014-03-08T23:23:23"];// future 的日期

    这将在用户的时间轴上看起来像“用户名正在吃披萨”,并且会继续这样显示,直到 end_time 指定的日期到来。 我认为我目前遇到的时区可能存在问题,因此如果您需要处理不同的时区,请务必小心。

  • 根据文档,“expires_in”属性是“end_time”的快捷方式,但您可以使用秒增量代替 datime 对象,例如“这是现在时,直到 500 秒过去了,因为它是已发布”,但我无法完成这项工作(帖子总是显示为过去时)

    [ Action 设置过期时间:@"500"];

  • 所有其他灵活的句子结构都由 Facebook 管理,您无法控制何时显示它们。例如,如果您的应用的两个用户共享其中的内容,它会在 friend 的时间线上显示类似“用户 1 和用户 2 正在吃披萨”的内容。

如果您发现其他问题,请更新您的帖子

关于ios - 如何为我的自定义 Open Graph 故事选择要发布的灵活句子结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21923905/

相关文章:

ios - swift removingPercentEncoding 不适用于 gb2312 字符串

ios - 快速将元素添加到复杂的嵌套集合中

ios - 从具有键值的字典数组中获取对象的索引

Facebook FB.ui 注销不会触发

android - 正确使用 Facebook 登入

iphone - 我可以使用相同的方法传入不同的 UIViewController 子类吗?

php - 自定义点赞功能

javascript - 对 JS SDK Facebook 事件的本质感到困惑

android - 无法通过android上的访问 token 获取Facebook Graph API信息

javascript - parseInt() 不会将数组的每个数组元素转换为整数