IOS新浪微博、微信分享

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

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

1. SDK相关文件配置

  • 下载相关SDK,将SDK文件放到对应的IOS的lib文件夹(按自己项目的lib文件夹来)下,如下图:
    IOS新浪微博、微信分享_第1张图片

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

IOS新浪微博、微信分享_第3张图片

注意:

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

    (2)配置https
    IOS新浪微博、微信分享_第5张图片

    (3)配置URL_Schemes
    IOS新浪微博、微信分享_第6张图片

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

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


    IOS新浪微博、微信分享_第7张图片
  • 微信:参照官方Demo,复制需要的文件
    注意:设置缩略图时,要保证缩略图的大小<=32KB
    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 *)options
{
    [WXApi handleOpenURL:url delegate:[WXApiManager sharedManager]];
    [WeiboSDK handleOpenURL:url delegate:[SinaWeiboApiManager sharedManager]];
    return YES;
}
```

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

IOS新浪微博、微信分享_第8张图片

总结:

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


可能出现的问题:

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

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

你可能感兴趣的:(IOS新浪微博、微信分享)