在iOS 9中如何通过WhatsApp分享字符串和图片

3

iOS 9 + Xcode 7.3中,通过WhatsApp分享字符串和图片时出现错误。在iOS 8中可以正常工作。代码:

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

    NSArray *excludeActivities = @[UIActivityTypePrint,
                                   UIActivityTypeCopyToPasteboard,
                                   UIActivityTypeAssignToContact,
                                   UIActivityTypeSaveToCameraRoll,
                                   UIActivityTypeAddToReadingList,
                                   UIActivityTypeAirDrop];

    activityController.excludedActivityTypes = excludeActivities;

    [activityController setValue:[NSString stringWithFormat:@"Test msg"] forKey:@"subject"];

    [self presentViewController:activityController animated:YES completion:nil];

enter image description here

3个回答

0
在iOS 9中,您需要在项目的.plist文件中添加以下行:
<key>LSApplicationQueriesSchemes</key>
 <array>
  <string>whatsapp</string>
 </array>

.plist中添加后进行检查。


@Ronak Chaniyara,我也尝试了那个方法,但它没有起作用。 - Raju
请查看此处的答案,或许可以帮到您:https://dev59.com/m1oV5IYBdhLWcg3wJ8LD#36622573。 - Ronak Chaniyara
我也用过这个,但它只能在iOS 8上运行,不能在iOS 9上运行! - Mahipalsinh
@Mahipalsinh,你尝试过iOS9了吗? - Raju
@iPhoneDev 是的,当我在 iOS 9 上进行测试时,会弹出这样的警告。但是,我使用以下代码解决了这个问题。 - Mahipalsinh

0
我使用以下代码解决了问题:
- (id)activityViewControllerPlaceholderItem:(UIActivityViewController *)activityViewController
{
    return @"";
}

- (id)activityViewController:(UIActivityViewController )activityViewController itemsForActivityType:(NSString )activityType
{

    if ([activityType isEqualToString:@"net.whatsapp.WhatsApp.ShareExtension"]) {

        NSString *strShare = @“Test string”;

        NSString *string = [NSString stringWithFormat:@"whatsapp://send?text=%@",strShare];
        NSURL *url = [NSURL URLWithString:[string stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
        [[UIApplication sharedApplication] openURL: url];

        return @"";

    }
    else
    {
        return  sharingItems;
    }
}

如何在按钮点击时调用此方法? - Raju
这两个是UIActivityItemSource的数据源方法,因此它会自动调用。请参考此网址:http://nshipster.com/uiactivityviewcontroller/。 - Mahipalsinh
但是我想在按钮上调用,那么我应该在哪里设置委托或方法? - Raju

0

您可以添加图片网址,因为无法共享图片。 像这样添加图片网址

NSArray *arrData = @[@"Post Title", @"imageURL"];
UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:arrData applicationActivities:nil];
NSArray *excludeActivities = @[UIActivityTypeAirDrop,
                               UIActivityTypePrint,
                               UIActivityTypeAssignToContact,
                               UIActivityTypeSaveToCameraRoll,
                               UIActivityTypeAddToReadingList];
activityVC.excludedActivityTypes = excludeActivities;

[self presentViewController:activityVC animated:YES completion:nil];

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接