a***@gmail.com
a***@gmail.com
  • 发布:2018-02-05 10:56
  • 更新:2020-05-11 22:29
  • 阅读:2906

iOS微信多图分享,折腾了一天总算成功了

分类:HTML5+
var UIPasteboard = plus.ios.importClass("UIPasteboard");  
            var generalPasteboard = UIPasteboard.generalPasteboard();  
            generalPasteboard.plusCallMethod({setValue: msg.title, forPasteboardType: "public.utf8-plain-text"});  
            // generalPasteboard.plusCallMethod({valueForPasteboardType:"public.utf8-plain-text"});  

            var NSURL = plus.ios.import('NSURL');  
            var NSData = plus.ios.import("NSData");  
            var UIImage = plus.ios.import("UIImage");  
            var NSArray = plus.ios.import("NSMutableArray");  
            var activityItems = NSArray.arrayWithCapacity(10);  

            msg.pictures.forEach(item => {  
                var imageUrl = NSURL.URLWithString(item)  
                var data = NSData.dataWithContentsOfURL(imageUrl);  
                var localImage = UIImage.imageWithData(data);  
                activityItems.addObject(localImage);  
            });  

            var UIActivityViewController = plus.ios.importClass("UIActivityViewController");  
            var activityVC = new UIActivityViewController();  
            var activity = plus.ios.invoke(activityVC, "initWithActivityItems:applicationActivities:", activityItems, null);  
            console.log("activity == ");  
            console.log(activity);  
            var UIApplicationClass = plus.ios.importClass("UIApplication");  
            var UIAppObj = UIApplicationClass.sharedApplication();  
            var del = plus.ios.invoke(UIAppObj, "delegate");  
            var appWindowObj = plus.ios.invoke(del, "window");  
            var appRootController = plus.ios.invoke(appWindowObj, "rootViewController");  
            console.log("appRootController == ");  
            console.log(appRootController);  
            plus.ios.invoke(appRootController, "presentViewController:animated:completion:", activity, "YES", null);

请注意,msg里面的图片是网络地址,不是本地地址

2018-02-05 10:56 2 条评论 负责人:无 分享
已邀请:
猫猫猫猫

猫猫猫猫 - 用户已离线

这个需要原生来写插件实现。
调用系统的分享功能。
你需要先用 h5+SDK 实现离线打包(https://ask.dcloud.net.cn/docs/#//ask.dcloud.net.cn/article/104),才能求助于我。
如果你没有 mac 设备,可以花1000在二手平台淘一个10款 的macmini,或者使用虚拟机。

  • a***@gmail.com (作者)

    好吧,谢谢。

    2018-02-05 11:11

  • a***@gmail.com (作者)

    请问下大神,数组怎么初始化啊,js初始化数组给objc用,这个文档没实例,不太明白

    2018-02-05 20:24

  • a***@gmail.com (作者)

    数组 @[1,2,3]/NSArray new XXX[] InstanceObject

    2018-02-05 20:25

  • a***@gmail.com (作者)

    他只说数组在ios上是InstanceObject

    2018-02-05 20:25

  • Eason

    使用以上的native.js不就直接能满足分享多图的功能么,请问下为什么要离线打包呢?

    2018-08-19 01:08

  • 猫猫猫猫

    回复 Eason:有部分兼容问题,另外回调没有。

    2018-09-05 18:27

  • Eason

    回复 猫猫猫猫: 谢谢回复

    2018-09-06 20:30

2***@qq.com

2***@qq.com

兄弟,你太牛了。我有一个疑问:
你分享文本的思路是把文本复制到剪切板了,到了微信里面还需要粘贴一下。

我想把文字直接带上,所以我做了如下尝试:
我先把分享图片的全部注释了,然后加了一句
activityItems.addObject(“测试”);
结果微信说数据异常,尝试好几种其它的写法都不行,你那边有做这个尝试吗?

ant8oo

ant8oo

亲测可用,不仅可以分享微信,还可以分享微博、QQ。太强大了。

gotogether

gotogether

ios13 可以调出来分享么?

该问题目前已经被锁定, 无法添加新回复