iOS 上的 Facebook 分享适用于某些设备,但不适用于其他设备
Facebook sharing on iOS works on some devices, but not others
所以我只是在我的应用程序中做一个基本的 facebook 分享,它在我的设备上运行良好(iPhone 6 OS 9.1 和 iPad air 9.02)但不不适合我的同事 iPad Air 2 8.4.1 或 iPhone 6 Plus 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];
}
Facebook 的平台政策不允许应用预填充消息字段。在这种情况下,因为您没有 Facebook 应用程序,它使用的是 Apple 的共享 sheet,它允许预填充但违反了 FB 的平台政策。在您朋友的情况下,他们可能会看到 Facebook 应用的共享扩展,它正确执行了政策,并且不允许预填充。
所以我只是在我的应用程序中做一个基本的 facebook 分享,它在我的设备上运行良好(iPhone 6 OS 9.1 和 iPad air 9.02)但不不适合我的同事 iPad Air 2 8.4.1 或 iPhone 6 Plus 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];
}
Facebook 的平台政策不允许应用预填充消息字段。在这种情况下,因为您没有 Facebook 应用程序,它使用的是 Apple 的共享 sheet,它允许预填充但违反了 FB 的平台政策。在您朋友的情况下,他们可能会看到 Facebook 应用的共享扩展,它正确执行了政策,并且不允许预填充。