美文网首页iOS学习笔记OS
iOS-友盟SDK6.0,自定义分享(复制链接)

iOS-友盟SDK6.0,自定义分享(复制链接)

作者: 知德 | 来源:发表于2016-11-10 14:49 被阅读1528次

    由于友盟分享SDK6.0整体重构,6.0以下SDK中的接口大都不能够使用了,以至于自定义分享功能不能使用原接口。
    在网上也搜索了好久,只有一个人提出了这个问题,但是没有人回复,泪奔。。。
    研究了半天,也崩溃了半天,最后,我成功实现原先可用的 复制链接 功能。

    如果是 友盟SDK6.1,请转到此处

    话不多说,直接上代码:

    在 SDK 路径
    UMSocalSDK -- UMSocialCore.framework -- Headers -- UMSocialPlatformConfig.h 
    文件中定义你需要的平台类型
    
    // 用户自定义的平台
    UMSocialPlatformType_UserDefine_Begin = 1000,
    // 注:1000 < xxxx < 200
    UMSocialPlatformType_Link = xxxx,
    UMSocialPlatformType_UserDefine_End = 2000,
    

    自定义分享平台类(重要的是遵循 UMSocialPlatformProvider 协议)

    // ZXCustomSharePlatform.h
    #import <UMSocialCore/UMSocialCore.h>
    
    @interface ZXCustomSharePlatform : UMSocialPlatformConfig <UMSocialPlatformProvider>
    
    @end
    

    实现(全部方法都得有,但是挑几个必须实现的写)

    // ZXCustomSharePlatform.m
    #import "ZXCustomSharePlatform.h"
    @implementation ZXCustomSharePlatform
    
    + (NSString *)platformNameWithPlatformType:(UMSocialPlatformType)platformType {
        return @"复制链接";
    }
    
    -(void)umSocial_ShareWithObject:(UMSocialMessageObject *)object
              withCompletionHandler:(UMSocialRequestCompletionHandler)completionHandler {
        UMShareWebpageObject *webObjc = object.shareObject;
        UIPasteboard *pastboad = [UIPasteboard generalPasteboard];
        pastboad.string = webObjc.webpageUrl;
        [ZXCusAlert alertWithTitles:@[@"链接复制成功"]];
    }
    
    注:因为我分享的是网页类型,所以 object.shareObject 的类型是 UMShareWebpageObject
    
    -(BOOL)umSocial_handleOpenURL:(NSURL *)url {
        return YES;
    }
    
    -(UMSocialPlatformFeature)umSocial_SupportedFeatures {
        return UMSocialPlatformFeature_None;
    }
    
    -(NSString *)umSocial_PlatformSDKVersion {
        return [UMSocialGlobal umSocialSDKVersion];
    }
    
    -(BOOL)checkUrlSchema {
        return YES;
    }
    
    -(BOOL)umSocial_isInstall {
        return YES;
    }
    
    -(BOOL)umSocial_isSupport {
        return YES;
    }
    
    @end
    
    在 SDK 路径
    UMSocialUI -- UMShareMenuSelectionView.m
    文件中的
    - dictWithPlatformName:
    方法中,添加自定义平台的图片名称和平台名称
    注:必须向 UMSocialUI -- Resource -- UMSocialSDKResources.bundle -- SnsPlatform 
       文件夹中添加平台显示的按钮图片(我添加的图片名称为icon_link)
    
    case UMSocialPlatformType_Link:
        imageName = @"icon_link";
        platformName = UMLocalizedString(@"copyLink",@"复制链接");
        break;
    

    最后,在 Appdelegate.m 文件中 其他分享平台代码下方 添加自定义平台代码:

    ZXCustomSharePlatform *cusPlatform = [[ZXCustomSharePlatform alloc] init];
    [[UMSocialManager defaultManager] addAddUserDefinePlatformProvider:cusPlatform withUserDefinePlatformType:UMSocialPlatformType_Link];
    

    相关文章

      网友评论

      • 知德:友盟SDK6.1.0 的,请转到 http://www.jianshu.com/p/1c765791b506
        8e16217a6824:@活上去 楼主,有第三方登录的么,为什么我拿不到登录的回调
        知德:哈哈,多谢多谢,共同努力,共同进步 :smiley:
        8e16217a6824:@活上去 我只能说真的给力,必须给你点赞
      • 8e16217a6824:UMSocialUI -- UMShareMenuSelectionView.m我没有找到呢
      • 翻炒吧蛋滚饭:楼主你好,我想问下,我下载的友盟SDK,看不到.m文件,怎么版呢?你用的哪个版本呢?
        翻炒吧蛋滚饭:@Mr_pipi :sob: 没啊
        8e16217a6824:@翻炒吧蛋滚饭 您好,解决了吗
        翻炒吧蛋滚饭:@翻炒吧蛋滚饭 看了下,6.1.0版本将ui的.m打到静态库里了,6.0.1版本还是在外面的 :sob:
      • 讨厌下雨的鱼:case UMSocialPlatformType_Link:
        imageName = @"icon_link";
        platformName = UMLocalizedString(@"copyLink",@"复制链接");
        break;
        请问这里如何设置自定义的标题和图片
        知德: 其实就在代码的上面写道了 :stuck_out_tongue_winking_eye:
        讨厌下雨的鱼:@这位壮士不太冷 找到了,谢谢

      本文标题:iOS-友盟SDK6.0,自定义分享(复制链接)

      本文链接:https://www.haomeiwen.com/subject/pbhxpttx.html