【问题标题】:Facebook sharing on iOS works on some devices, but not othersiOS 上的 Facebook 共享适用于某些设备,但不适用于其他设备
【发布时间】:2016-02-06 10:42:02
【问题描述】:

所以我只是在我的应用程序中做一个基本的 Facebook 分享,它在我的设备(iPhone 6 OS 9.1 和 iPad air 9.02)上运行良好,但在我的同事 iPad Air 2 8.4.1 或 iPhone 6 上运行不正常加 9.1。有人知道为什么会这样吗?

他们在设备设置中登录 facebook。他们还安装了 facebook 应用程序(我没有应用程序,只是通过设置登录)

这是我设备的屏幕截图,显示要分享的消息,其他设备只显示图像,没有文字。

这是我用来分享的代码

- (void)shareTapped {
    UIImage *image = self.pictureView.image;

    NSString *postText = [NSString stringWithFormat:@"%@\n*%@\n%@\n%@, %@ %@", self.event.shortDescription, self.event.eventCode, self.event.address, self.event.city, self.event.state, self.event.zip];
    [[UtilitiesObject sharedInstance] shareMessage:postText image:image parentVC:self];
}

- (void)shareMessage:(NSString *)msg image:(UIImage *)image parentVC:(UIViewController *)parentVC {
    NSArray *activityItems = @[msg];
    if (image) {
        activityItems = @[msg, image];
    }

    UIActivityViewController *activityController = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:nil];

    // Tailor the list of services displayed
    activityController.excludedActivityTypes = @[UIActivityTypeAssignToContact,
                                             //UIActivityTypePostToFacebook,
                                             //UIActivityTypePostToTwitter,
                                             //UIActivityTypeMail,
                                             UIActivityTypeMessage,
                                             UIActivityTypeSaveToCameraRoll,
                                             UIActivityTypePrint,
                                             UIActivityTypePostToWeibo,
                                             UIActivityTypeCopyToPasteboard];

    activityController.popoverPresentationController.sourceView = parentVC.view;

        [activityController setCompletionWithItemsHandler:
 ^(NSString *activityType, BOOL completed, NSArray *returnedItems, NSError *activityError) {
         if ([activityType isEqualToString: UIActivityTypeMail]) {
             NSLog(@"Mail");
         }
         if ([activityType isEqualToString:UIActivityTypePostToFacebook]) {
             NSLog(@"Facebook");
         }
         if ([activityType isEqualToString:UIActivityTypePostToTwitter]) {
             NSLog(@"Twitter");
         }
     }];

    [parentVC presentViewController:activityController animated:YES completion:nil];
}

【问题讨论】:

    标签: ios facebook share sharing


    【解决方案1】:

    Facebook 的平台政策不允许应用预先填写消息字段。在这种情况下,由于您没有 Facebook 应用程序,它使用的是 Apple 的共享表,它允许预填充,但违反了 FB 的平台政策。在您的朋友的情况下,他们可能会看到 Facebook 应用的分享扩展,它正确执行了政策,并且不允许预填充。

    【讨论】:

    • 我明白了,很有趣。谢谢。
    • 如果我使用官方 Facebook api 会怎样?
    • 我不太清楚你所说的官方 Facebook api 是什么意思。如果您指的是 Graph API 并且您拥有 publish_actions 权限,那么可以,您可以指定 Message 字段。但是,您必须允许用户输入该消息,而不是预先填写。
    • 好的,这回答了我的问题。谢谢
    猜你喜欢
    • 2016-10-11
    • 2013-05-27
    • 1970-01-01
    • 1970-01-01
    • 2018-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多