IOS新浪微博、微信分享

作者: EternalSunLhx | 来源:发表于2016-11-29 14:23 被阅读1483次

    用的各平台原生的分享SDK,未采用第三方集成的SDK(例如ShareSDK、友盟U-Share等)。

    原因有三:
    1. 不想暴露自己的AppKey、AppID等信息给第三方;
    2. 第三方集成的原生SDK可能不是最新的,或者是排版不对;
    3. 遇到奇怪问题的时候,于第三方客服沟通,有时会解决不了;
    注意事项:
    1. 最好是先注册好账号,申请相应的AppKey或AppID;
    2. IOS的坑比较小,稍微注意一下就好;

    1. SDK相关文件配置

    • 下载相关SDK,将SDK文件放到对应的IOS的lib文件夹(按自己项目的lib文件夹来)下,如下图:

      并在项目配置中的Build Settings --> Search Paths设置好Header Search PathsLibrary Search Paths,如下图:
    • 配置中的Build Phases --> Link Binary With Libraries,设置好要添加的库(文档中有提到,没提到的可以看官方Demo里面的设置)
    注意:xcode8自带的库现在都是以 .tbd 结尾,而不是.dylib

    注意:
    1. 新浪微博中有个WeiboSDK.bundle(当没有新浪微博客户端时,会调用SDK的浏览器,这个就是浏览器要用到的资源),这里面是新浪微博的图片资源文件,一定要放在新浪微博能找得到的地方(mainBundle文件夹等,按自己的项目来),否则会出现闪退现象。
    2. 上图中有个MOBFoundation.framework,主要是微信来剪裁缩略图。github地址:点我跳转
    • 配置中的Info,设置好相关白名单、https、URL_Schemes等配置
      (1)配置白名单

      (2)配置https

      (3)配置URL_Schemes

    2. 编写自己需要分享的代码

    • 微信 和微博主要结构如下:


    • 微信:参照官方Demo,复制需要的文件
      <u>注意:设置缩略图时,要保证缩略图的大小<=32KB</u>
      WXApiManager.h、WXApiManager.mm,主要功能:接收分享回调
      WXMediaMessage.h、WXMediaMessage.m,主要更能:构造发送媒体参数
      SendMessageToWXReq.h、SendMessageToWXReq.m,主要功能:构造发送(SendMessageToWXReq)参数
      WXApiRequestHandler.h、WXApiRequestHandler.m,主要功能:发送构造好的SendMessageToWXReq分享请求

    • 新浪微博:参照微信,从官方Demo复制需要的代码
      SinaWeiboApiManager.h、SinaWeiboApiManager.mm,主要功能:接收分享回调
      SendMessageToSinaWeibo.h、SendMessageToSinaWeibo.mm,主要功能:构造发送参数,及发送分享请求

    • AppDelegate.m

      #import "SinaWeiboApiManager.h"
      #import "WXApiManager.h"
      
      //在这个函数里注册你申请的各种Key,新浪的是AppKey,微信是AppID
      - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
      

    {
    //wechat
    //向微信注册
    [WXApi registerApp:@"wx8888888888888888" withDescription:@"ShareDemo"];

        //向微信注册支持的文件类型
        UInt64 typeFlag = MMAPP_SUPPORT_TEXT | MMAPP_SUPPORT_PICTURE | MMAPP_SUPPORT_LOCATION | MMAPP_SUPPORT_VIDEO |MMAPP_SUPPORT_AUDIO | MMAPP_SUPPORT_WEBPAGE | MMAPP_SUPPORT_DOC | MMAPP_SUPPORT_DOCX | MMAPP_SUPPORT_PPT | MMAPP_SUPPORT_PPTX | MMAPP_SUPPORT_XLS | MMAPP_SUPPORT_XLSX | MMAPP_SUPPORT_PDF;
    
        [WXApi registerAppSupportContentFlag:typeFlag];
    
        //sinaweibo
        //新浪微博初始化
        [WeiboSDK registerApp:@"888888888"];
    }
    
    //添加分享回来的回调
    - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
    

    {
    [WXApi handleOpenURL:url delegate:[WXApiManager sharedManager]];
    [WeiboSDK handleOpenURL:url delegate:[SinaWeiboApiManager sharedManager]];
    return YES;
    }

    -(BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options
    {
        [WXApi handleOpenURL:url delegate:[WXApiManager sharedManager]];
        [WeiboSDK handleOpenURL:url delegate:[SinaWeiboApiManager sharedManager]];
        return YES;
    }
    ```
    

    3. 添加写好的文件到配置Build Phases --> Complie Sources


    总结:

    总的来说IOS的分享坑很少,基本没有,只要注意下微信的缩略图的大小,保证小于32KB,就不会出现什么大问题;还有就是新浪微博的WeiboSDK.bundle要放对位置,其他的只要按照上面的配置来,就没什么大问题。


    可能出现的问题:

    1. 点击微信分享,闪一下就退回到应用。
      有以下情况会造成这种现象:
      (1)缩略图的大小>32kb;
      (2)初始化和配置的AppID和申请的不一样,改正好后,最好删除微信再试;
    2. 点击新浪微博分享闪退。是WeiboSDK.bundle没放对位置
    3. 点击新浪微博分享,闪一下退回到应用。
      有以下情况会造成这种现象:
      (1)没有配置白名单、以及https;
      (1)初始化和配置的AppKey和申请的不一样;

    ANDROID新浪微博、微信分享:点我跳转

    相关文章

      网友评论

        本文标题:IOS新浪微博、微信分享

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