GithubHelp home page GithubHelp logo

xmsharemodule's Introduction

ReadMe

为了方便第三方开发者快速简单的集成国内三大社交平台(微信,QQ,微博),故造此轮子。

目前支持微信(微信好友,微信朋友圈),QQ,QQ空间,新浪微博)

关于此模块的Bug反馈、建议、口水等等,请大家狠拍并提交到Github上,我会尽快解决。

该模块会继续完善优化,争取为大家提供一个更快速、更简单、更规范、扩展性更好的集成模块。

===========

图片

特点:

  • 快速
  • 简单
  • 易集成
  • 支持网页/SSO
  • 扩展性好
  • 可定制

===========

更新 Log

* 2015-09-29 修复网页微博分享时内容没有传入的 Bug
* 2015-10-29 适配 iOS 9 下分享
* 2015-11-04 新增三大平台分享后的回调
* 2016-01-11 新增适配 iOS 9 SSO 的 `LSApplicationQueriesSchemes`配置说明

集成步骤

1. 下载微信、QQ、微博的社交sdk并导入至项目中

  • 可在本页下方参考资料中取得

2. 导入它们所需的系统framework与库

程序 —— Targets —— Build Phases —— Link Binary With Libraries

Security.framework, SystemConfiguration.framework, CoreGraphics.framework, CoreTelephony.framework, QuartzCore.framework, ImageIO.framework, CoreText.framework, UIKit.framework, Foundation.framework, libsqlite3.dylib, libc++.dylib, libz.dylib, libstdc++.dylib, libiconv.dylib

  • (具体可参考本页底部参考资料链接)

3. 设置编译选项

程序 —— Targets —— Build Settings —— Linking —— Other Linker Flag 添加 -ObjC

4. 设置URL Schema

  1. 程序 —— Targets —— Info —— URL Types

分别添加微信,QQ,微博

tencentopenapi : tencent222222

mqqapi : QQ0605C97A

weibo : wb2045436852

weixin : wxd930ea5d5a258f4f

  • 以上均为测试app key,具体可以去对应的开放平台注册

  • mqqapi 是 tencent 的 app key 转十六进制,不足八位在前面补 0 的结果


2. 在 Info.plist 中添加 `LSApplicationQueriesSchemes` 项, 分别添加社交平台的几个白名单: mqq

mqqopensdkapiV2

mqqapi

weibosdk2.5

weibosdk

weibo

weixin

wechat

具体列表请至获取 iOS 9 应用跳转适配

5. 导入XMShareView至项目中

XMShareView结构介绍:
名称 解释
CommonMarco.h 通用宏文件,包含APP Key等宏
ExtView/ 扩展View,VerticalUIButton为图片文件垂直对齐按钮
Resource/ 图片等资源,包含微信、QQ、微博图标
ShareUtil/ 分享工具类
XMShareView.h 分享显示视图

6. 在AppDelegate.m中注册

  1. 导入文件头
#import "WXApi.h"
#import <TencentOpenAPI/TencentOAuth.h>
#import "WeiboSDK.h"
  1. application -> didFinishLaunchingWithOptions 方法中注册
[WXApi registerApp:APP_KEY_WEIXIN];
[WeiboSDK enableDebugMode:YES];
[WeiboSDK registerApp:APP_KEY_WEIBO];

7. 在ViewController.m 中引用

  • 导入文件头

     #import "XMShareView.h"
    
  • 添加一个属性

@property (nonatomic, strong) XMShareView *shareView;
  • 在点击分享的方法添加如下代码:
   if(!self.shareView){
        
        self.shareView = [[XMShareView alloc] initWithFrame:self.view.bounds];
        
        self.shareView.alpha = 0.0;

        self.shareView.shareTitle = NSLocalizedString(@"分享标题", nil);
        
        self.shareView.shareText = NSLocalizedString(@"分享内容", nil);
        
        self.shareView.shareUrl = @"http://xumeng.github.com";
        
        [self.view addSubview:self.shareView];
        
        [UIView animateWithDuration:1 animations:^{
            self.shareView.alpha = 1.0;
        }];
        
        
    }else{
        [UIView animateWithDuration:1 animations:^{
            self.shareView.alpha = 1.0;
        }];
        
    }

8. 处理 URL 跳转

AppDelegate 类中实现两个处理 URL 跳转的方法。

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
    if ([[url absoluteString] hasPrefix:@"tencent"]) {
        
//        return [TencentOAuth HandleOpenURL:url];
        return [QQApiInterface handleOpenURL:url delegate:self];
        
    }else if([[url absoluteString] hasPrefix:@"wb"]) {
        
        return [WeiboSDK handleOpenURL:url delegate:self];
        
    }else if([[url absoluteString] hasPrefix:@"wx"]) {

        //  处理微信回调需要在具体的 ViewController 中处理。
        ViewController *vc = (ViewController *)self.window.rootViewController;
        return [WXApi handleOpenURL:url delegate:vc];
        
    }
    
    return NO;
}

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
{
    if ([[url absoluteString] hasPrefix:@"tencent"]) {
        
        return [TencentOAuth HandleOpenURL:url];
        
    }else if([[url absoluteString] hasPrefix:@"wb"]) {
        
        return [WeiboSDK handleOpenURL:url delegate:self];
        
    }else{
        
        ViewController *vc = (ViewController *)self.window.rootViewController;
        return [WXApi handleOpenURL:url delegate:vc];
        
    }
}

9. 处理分享后的回调

特别提醒:(下方方法体内是示例代码,具体业务逻辑请具体实现)

  • 微信分享:在具体的调用 ViewController 类里面实现微信 WXApiDelegate 协议,然后实现以下方法:
- (void)onResp:(BaseResp *)resp
{
    NSString *message;
    if(resp.errCode == 0) {
        message = @"分享成功";
    }else{
        message = @"分享失败";
    }
    showAlert(message);
}
  • QQ 分享:在 AppDelegate 类中实现 QQApiInterfaceDelegate 协议,然后实现以下方法:
- (void)onResp:(QQBaseResp *)resp
{
    NSString *message;
    if([resp.result integerValue] == 0) {
        message = @"分享成功";
    }else{
        message = @"分享失败";
    }
    showAlert(message);
}
  • 微博分享:在 AppDelegate 类中实现 WeiboSDKDelegate 协议,然后实现以下方法:
- (void)didReceiveWeiboResponse:(WBBaseResponse *)response
{
    NSString *message;
    switch (response.statusCode) {
        case WeiboSDKResponseStatusCodeSuccess:
            message = @"分享成功";
            break;
        case WeiboSDKResponseStatusCodeUserCancel:
            message = @"取消分享";
            break;
        case WeiboSDKResponseStatusCodeSentFail:
            message = @"分享失败";
            break;
        default:
            message = @"分享失败";
            break;
    }
    showAlert(message);
}

参考资料

QQ iOS SDK 环境搭建

新浪微博 iOS SDK 环境搭建

微信 iOS SDK 环境搭建

iOS 9 适配 SSO

xmsharemodule's People

Contributors

xumeng avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

xmsharemodule's Issues

未安装微博客户端不能分享图片?

看到代码这样写的,当判断没有安装微博客户端的时候,不设置mediaObject,是因为微博的限制,在未安装客户端时只能发文字么?

  • (WBMessageObject *)messageToShare
    {

    WBMessageObject *message = [WBMessageObject message];
    BOOL hadInstalledWeibo = [[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"weibo://"]];

    if(hadInstalledWeibo){
    WBWebpageObject *webpage = [WBWebpageObject object];
    webpage.objectID = @"identifier1";
    webpage.title = self.shareTitle;
    webpage.description = self.shareText;
    // 可改为自定义图片
    webpage.thumbnailData = UIImageJPEGRepresentation(SHARE_IMG, SHARE_IMG_COMPRESSION_QUALITY);
    webpage.webpageUrl = self.shareUrl;

    message.mediaObject = webpage;
    

    }

    message.text = [NSString stringWithFormat:@"%@ - %@ %@", self.shareTitle, self.shareText, self.shareUrl];

    return message;

}

缩略图问题

不能超过32k,如果设置超过了点击就不能分享了,如果不用在乎这个尺寸就更好了

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.