当前位置: 首页 > 工具软件 > whatsapp-ios > 使用案例 >

iOS 由WhatsApp分享到系统分享

曾航
2023-12-01
  1. 官方文档解释:https://faq.whatsapp.com/zh_cn/iphone/23559013 其实就是调用系统分享,whatsapp是Facebook旗下的一款app,没有像Facebook一样提供分享的SDK API.

  2. whatsapp分享链接时附带的图片分享不出去.

  3. 链接分享使用canOpenURL/openURL 打开第三方APP。(需要在.plist文件中添加whatsapp白名单)

  4. 分享图片使用系统的UIDocumentInteractionController共享文件。不可跳过系统选择面板

    // 将图片/文件转换为NSURL 
    NSURL *tempFile	= “需要分享的file转换 ”;
    // 使用 UIDocumentInteractionController 共享文件
    UIDocumentInteractionController* _docControll = [UIDocumentInteractionController interactionControllerWithURL:tempFile];
    		_docControll.UTI = UTIWithWhatsAppType(type);  // 设置分享的类型,分享的类型见下图
    		_docControll.delegate = self;
    		
    		[_docControll presentOpenInMenuFromRect:CGRectZero
    										 inView:view
    									   animated:YES];
    
    text (UTI: public.plain-text)
    photos (UTI: public.image)
    videos (UTI: public.movie)
    audio notes and music files (UTI: public.audio)
    PDF documents (UTI: com.adobe.pdf)
    contact cards (UTI: public.vcard)
    web URLs (UTI: public.url)
    
    images - «.wai» which is of type net.whatsapp.image
    videos - «.wam» which is of type net.whatsapp.movie
    audio files - «.waa» which is of type net.whatsapp.audio
    
  5. 也可以使用UIActivityViewController.

    UIImage *image = [UIImage imageWithContentsOfFile:imagePath];
    NSArray *items = @[image]; // 可以添加其他信息,例如 链接、 分享消息
    // 自定义ViewController 继承 UIActivityViewController,可以自定义方向
    MyActivityController *activityVC = [[MyActivityController alloc]initWithActivityItems:activityItems applicationActivities:nil];
        g
        // prensent 出系统controller
        [self.vc presentViewController:activityVC animated:YES completion:nil];
        
        // 接收回调
        UIActivityViewControllerCompletionWithItemsHandler myBlock = ^(UIActivityType __nullable activityType, BOOL completed, NSArray * __nullable returnedItems, NSError * __nullable activityError) {
            
            if (completed){
                NSLog(@"completed");
            }
        };
        activityVC.completionWithItemsHandler = myBlock;
    
  6. 当遇到 多渠道分享,例如:Facebook&WhatsApp 分享,Facebook无法使用系统分享,只能调用FBSDK,而系统分享选择面板无法监听点击效果。此时需要自定义分享面板。可使用UITableView

 类似资料: