iOS 友盟分享6.9.7(QQ 微博 微信)

最近对应项目更新的时候,发现分享这块出现了大问题,要么显示无应用,要么显示应用网络连接不可。
我项目里原本使用的是友盟SDK4.4
集成了QQ 微信 微博
我这里具体出现了一下三种状况

  1. QQ分享 每次分享跳转到QQ的时候,提示没有当前应用
  2. 微信分享 每次分享跳转到微信的时候,提示Bundle ID不正确
  3. 微博分享 每次分享跳转到微信的时候,显示网络连接异常

下面我讲讲我遇到这三种问题是如何解决的吧

1.QQ分享

这个提示没有当前应用的原因是,腾讯开放平台下的设置不正确,需要在腾讯开放平台设置当前应用的Bundle ID,和一些其他信息。
其实如果只是分享的话,主要就用到Bundle ID了,其他信息目前不重要
腾讯开放平台
https://connect.qq.com/index.html

2.微信分享

这个提示Bundle ID不正确,是因为微信开放平台上没有针对当前应用设置Bundle ID,跟QQ分享一样,设置上就好用了。
微信开放平台
https://open.weixin.qq.com/

3. 微博分享

这个每次点击分享的时候,会提示网络连接不畅,或者失败什么的。这个原因是因为我这用的友盟分享SDK版本太低了,我这用的4.4,我看了一下友盟官网,已经更新到9.6.7了,所以果断下载更新。
友盟SDK下载地址
https://www.umeng.com/social?spm=a211g2.181323.0.0.3cb275efBiyBkT

ps 新的SDK可以拖拽到项目里直接用,或者通过pod来集成

4.友盟9.6.7实装

1.配置SSO授权白名单
设置白名单为的是能够获取第三方平台的授权。
如果你的应用使用了如SSO授权登录或跳转到第三方分享功能,在iOS9/10下就需要增加一个可跳转的白名单,即LSApplicationQueriesSchemes,否则将在SDK判断是否跳转时用到的canOpenURL时返回NO。

LSApplicationQueriesSchemes

    wechat
    weixin
    sinaweibohd
    sinaweibo
    sinaweibosso
    weibosdk
    weibosdk2.5
    mqqapi
    mqq
    mqqOpensdkSSoLogin
    mqqconnect
    mqqopensdkdataline
    mqqopensdkgrouptribeshare
    mqqopensdkfriend
    mqqopensdkapi
    mqqopensdkapiV2
    mqqopensdkapiV3
    mqqopensdkapiV4
    mqzoneopensdk
    wtloginmqq
    wtloginmqq2
    mqqwpa
    mqzone
    mqzonev2
    mqzoneshare
    wtloginqzone
    mqzonewx
    mqzoneopensdkapiV2
    mqzoneopensdkapi19
    mqzoneopensdkapi
    mqqbrowser
    mttbrowser
    tim
    timapi
    timopensdkfriend
    timwpa
    timgamebindinggroup
    timapiwallet
    timOpensdkSSoLogin
    wtlogintim
    timopensdkgrouptribeshare
    timopensdkapiV4
    timgamebindinggroup
    timopensdkdataline
    wtlogintimV1
    timapiV1
    alipay
    alipayshare

iOS 友盟分享6.9.7(QQ 微博 微信)_第1张图片
2. 配置URL Scheme
目的是能够在分享结束后跳回到自己的app中,Scheme是其他应用跳转回来的标识,而且每个应用的标识还是不同的。
Info->URL Types配置Schemes
QQ需要添加tencent
微信直接用
微博添加wb
iOS 友盟分享6.9.7(QQ 微博 微信)_第2张图片3.导入所需要的头文件
pch文件中倒入以下三个头文件

	#import 
	#import 
	#import 

4.实装友盟

4.1 初始化友盟

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.

// U-Share 平台设置
[UMConfigure setEncryptEnabled:YES];//打开加密传输
[UMConfigure setLogEnabled:NO];//设置打开日志,发布必须设置为NO
[UMConfigure initWithAppkey:APPKEY channel:@"App Store"];
// 设置微信的appKey和appSecret
[[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_WechatSession appKey:WXAPPID appSecret:ShareAppSecret redirectURL:SHAREURL];
// 设置分享到QQ互联的appID
//  U-Share SDK为了兼容大部分平台命名,统一用appKey和appSecret进行参数设置,而QQ平台仅需将appID作为U-Share的appKey参数传进即可。
[[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_QQ appKey:ShareQQAppID  appSecret:ShareQQKey redirectURL:SHAREURL];
//  设置新浪的appKey和appSecret 
[[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_Sina appKey:ShareSinaID  appSecret:ShareQQKey redirectURL:SHAREURL];

return YES;
}

4.2 显示分享
在需要跳分享的地方实装,我代码里是点击分享按钮

// 推荐按钮按下
- (IBAction)recommendButtonAction:(id)sender
{
	// 显示分享面板
	__weak typeof(self) weakSelf = self;
	[UMSocialUIManager showShareMenuViewInWindowWithPlatformSelectionBlock:^(UMSocialPlatformType platformType, NSDictionary *userInfo) {
    	[weakSelf shareToPlatformType:platformType];
 }];
}

- (void)shareToPlatformType:(UMSocialPlatformType)platformType {
	//创建分享消息对象
	UMSocialMessageObject *messageObject = [UMSocialMessageObject messageObject];
	//创建分享的网页
	/**
 	* @param title 标题
 	* @param descr 描述
 	* @param thumImage 缩略图(UIImage或者NSData类型,或者image_url)
 	*/
	UMShareWebpageObject *shareObject = [UMShareWebpageObject shareObjectWithTitle:__STR_PROJECT_NAME__ descr:__STR_PROJECT_NAME__ thumImage:[UIImage imageNamed:@"AppIcon"]];
	shareObject.webpageUrl = SHAREURL;
	//分享消息对象设置分享内容对象
	messageObject.shareObject = shareObject;
	//判断是否安装所分享到的平台, 没安装则不分享,给出提示。
	if (![self isInstall:platformType]) {
    	return ;
	}
	//调用分享接口
	[[UMSocialManager defaultManager] shareToPlatform:platformType messageObject:messageObject currentViewController:nil completion:^(id data, NSError *error) {
    	//分享失败
    	if (error) {
        
    	}else{
       	 if (platformType == UMSocialPlatformType_WechatTimeLine) {
            	//分享到朋友圈成功
        	} else {
            	//分享到其他平台成功
       	}
    	}
	}];
}
// 判断是否安装分享平台
- (BOOL)isInstall:(UMSocialPlatformType)platformType {
	if (![[UMSocialManager defaultManager] isInstall:platformType]) {
    	if (platformType == UMSocialPlatformType_QQ) {
        	//qq
        	NSLog(@"未安装QQ");
    	} else {
        	//weixin
        	NSLog(@"未安装微信");
    	}
    	return NO;
	}
	return YES;
}

参考文章
https://www.jianshu.com/p/52a01e814238

你可能感兴趣的:(iOS)