iOS 微信分享-官方集成

之前陆陆续续做过一些三方分享,都是一键集成包含各大社交软件的三方,例如shareSDk和友盟,这次应公司要求,需要单个集成,下面是集成步骤,老规矩,有问题请留言或者评论🙏

1.帐号申请

https://open.weixin.qq.com/

首先登录微信开放平台,注册一个帐号

2.提交APP审核

为什么必须提交app审核呢?

审核2天就可以审核通过,通过之后为下图,为应用申请了appid和appsecret

3.下载最新的SDK

--这里--去官网下载最新sdk

4.导入SDK

在工程Build Phases -> Link Binary With Libraries 链接以下动态库和框架文件

 

5.设置白名单(点击查看白名单详细信息

6.关闭bitcode

 

 

7.设置URL 

8.使用SDK注册你的APP

AppDelegate此方法中注册,导入import "WXApi.h"

 

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  [WXApi registerApp:@"xxxxxxxxxxxx"];//此为申请下来的key一般以wx开头
  return YES;
}

-(BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url{
return [WXApi handleOpenURL:url delegate:self];
}

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

#pragma mark WXApiDelegate 微信分享的相关回调

// onReq是微信终端向第三方程序发起请求,要求第三方程序响应。第三方程序响应完后必须调用sendRsp返回。在调用sendRsp返回时,会切回到微信终端程序界面
- (void)onReq:(BaseReq *)req
{
NSLog(@"onReq是微信终端向第三方程序发起请求,要求第三方程序响应。第三方程序响应完后必须调用sendRsp返回。在调用sendRsp返回时,会切回到微信终端程序界面");
}

// 如果第三方程序向微信发送了sendReq的请求,那么onResp会被回调。sendReq请求调用后,会切到微信终端程序界面
- (void)onResp:(BaseResp *)resp
{
NSLog(@"回调处理");

// 处理 分享请求 回调
if ([resp isKindOfClass:[SendMessageToWXResp class]]) {
    switch (resp.errCode) {
        case WXSuccess:
        {
            UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示"
                                                            message:@"分享成功!"
                                                           delegate:self
                                                  cancelButtonTitle:@"OK"
                                                  otherButtonTitles:nil, nil];
            [alert show];
        }
            break;

        default:
        {
            UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示"
                                                            message:@"分享失败!"
                                                           delegate:self
                                                  cancelButtonTitle:@"OK"
                                                  otherButtonTitles:nil, nil];
            [alert show];
        }
            break;
    }
  }
}

8.分享核心代码

 

- (IBAction)shareBtn:(UIButton *)sender {

//创建发送对象实例
SendMessageToWXReq *sendReq = [[SendMessageToWXReq alloc] init];
sendReq.bText = NO;//不使用文本信息
sendReq.scene = 0;
// 发送到聊天界面  0
// 发送到朋友圈    1
// 发送到微信收藏  2
//创建分享内容对象 WXMediaMessage *urlMessage = [WXMediaMessage message]; urlMessage.title = @"";//分享标题 urlMessage.description = @"";//分享描述 [urlMessage setThumbImage:[UIImage imageNamed:@"Img"]];//分享图片,使用SDK的setThumbImage方法可压缩图片大小 //创建多媒体对象 WXWebpageObject *webObj = [WXWebpageObject object]; webObj.webpageUrl = kLinkURL;//分享链接 //完成发送对象实例 urlMessage.mediaObject = webObj; sendReq.message = urlMessage; //发送分享信息 [WXApi sendReq:sendReq]; }

 

至此,整体的微信分享就完成了,但是无论是官方demo还是网上方法,大多都有错点和遗漏,以下是可能遇到的错误以及解决方法:

1。官方Demo编译报错。

这个错误算是比较坑,大家都是冲着你们的功能来的,结果所有人下的代码都跑不起来,坑爹啊,吐槽结束,解决办法是按照上图添加依赖库(点此下载无错版的demo

2。编译不通过(下图)


解决办法:添加libc++.tbd

3。无法跳转至微信

根据提示信息显示可能有两种情况 

1 iOS跳转到其他APP使用的是URL Scheme,在iOS9新特性中加入了URL Scheme白名单功能,需要把要跳转的APP的URL Scheme加入到当前工程的跳转白名单中,具体操作请看上面写过了

2 当前机器中没有安装微信
可以使用WXApi.h中的isWxAppInstalled方法来判断当前机器是否安装了微信,从而做出相应操作

4。Terminating app due to uncaught exception 'NSInvalidArgumentException'reason: '-[__NSArrayM enqueue:]: unrecognized selector sent to instance 0x1f0a9ae0'

解决方法:

-------1.你的工程文件中选择Build Setting,在"Other Linker Flags"中加入"-ObjC",记住-ObjC的C要大写。

-------2.如果工程报错"_GCControllerDidDisconnectNotification"

项目->TARGETS->iOS->Build Phases->Link Binary With Libraries

增加库:
GameController.framework

-------3.如果还报错xx.dylib的问题的话,则找到刚刚添加的GameController.framework,右侧Required改为Opitional

posted @ 2017-05-03 16:35  OC大人  阅读(1089)  评论(0编辑  收藏  举报