自己写一个第三方分享库(一)

前言

最近想做分享时,总是遇到需要更新最新包的问题,并且还需要导入真机和模拟器两个包,非常麻烦,所以一直在思考如何自己做一个分享库,要想做第三方的分享库,首要问题是需要知道App是如何跳转以及分享数据是如何传递,之前我想到是通过OpenURL中URL后面带参数去实现,后来想想URL长度传递是不可能允许这么多的数据传递,应该是通过App之间相互能访问的存储空间实现APP之间的数据传递,想想只有剪贴版了,实践证明我的猜想是对的,所以就把这次研究的步骤一步一步想下,与大家分享~

准备工作

本代码都是在真机上测试,模拟器不在此次考虑之内,为了简化,现在暂时以微信做介绍。

到微信官网下载Lib库,并按照微信官方指示搭建项目。

证明猜想

微信会话分享代码

- (void)weixinSession_share:(NSDictionary *)para {

    WXMediaMessage *message = [WXMediaMessage message];
    message.title = title;
    message.description = description;
    [message setThumbImage:[UIImage imageNamed:@"Icon-72"]];

    WXWebpageObject *ext = [WXWebpageObject object];
    ext.webpageUrl = webpageUrl;
    message.mediaObject = ext;

    SendMessageToWXReq* req = [[SendMessageToWXReq alloc] init];
    req.bText = NO;
    req.message = message;
    req.scene = WXSceneSession;
    [WXApi sendReq:req];

    NSArray * pastboardTypes = [[UIPasteboard generalPasteboard] pasteboardTypes];
    for (NSString * pastboardType in pastboardTypes) {
        NSData * data = [[UIPasteboard generalPasteboard] valueForPasteboardType:pastboardType];
        NSDictionary * dictionary = [NSPropertyListSerialization propertyListWithData:data options:NSPropertyListBinaryFormat_v1_0 format:0 error:nil];
        debug(@"%@", dictionary);
    }
}

打印出来的结果

{
    wx72607e32ec65d0e1 =     {
        command = 1010;
        description = "8%\U6d3b\U671f\U6536\U76ca\U7387\Uff0c\U4ec5\U5343\U5206\U4e4b\U4e00\U574f\U5e10\U7387\Uff0c2015\U5e74\U6700\U706b\U7206\U7684\U62a2\U94b1\U795e\U5668\Uff0c\U771f\U5fc3\U8dea\U4e86\Uff01";
        mediaUrl = "http://www.jindanlicai.com/download/download.html";
        objectType = 5;
        result = 1;
        returnFromApp = 0;
        scene = 0;
        sdkver = "1.5";
        thumbData = <ffd8ffe0 .....>;(图片太长,这个就省略了)
        title = "\U91d1\U86cb\U7406\U8d22\Uff0c\U8de8\U754c\U7406\U8d22\U795e\U5668";
    };
}

从打印结果看,他的数据是存在UIPasteboard中,其中,wx72607e32ec65d0e1为我在微信平台申请的key值,description为分享描述,mediaUrl为分享链接,objectType为分享对象类型,scene为分享目的地,sdkver为版本号,thumbData为分享的缩略图,title为分享标题。

自己实现分享

既然我们已经知道了微信的数据保存在哪,并且知道他的数据格式是如何保存的,那么我们就可以自己写代码去实现微信分享了,我们新建一个项目SharedSDKDemo,然后在viewController中添加如下代码

- (NSString*)weixinShare {
    NSMutableDictionary *dic=[[NSMutableDictionary alloc] initWithDictionary:@{
                            @"result" : @"1",
                            @"returnFromApp" : @"0",
                            @"scene" : [NSString stringWithFormat:@"%d",shareTo],
                            @"sdkver" : @"1.5",
                            @"command" : @"1020",
                            @"title" : @"我们来测试",
                        }];

    NSData *output = [NSPropertyListSerialization dataWithPropertyList:@{@"wxd930ea5d5a258f4f":dic} format:NSPropertyListBinaryFormat_v1_0 options:0 error:nil];
    [[UIPasteboard generalPasteboard] setData:output forPasteboardType:@"content"];



[[UIApplication sharedApplication]openURL:[NSURL URLWithString:[NSString stringWithFormat:@"weixin://app/%@/sendreq/?",@"wx72607e32ec65d0e1"]];
}

执行以上代码可以得到:

这里写图片描述

由此可看到如果我们自己想做一具分享SDK也是可以的~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值