ios友盟分享与登陆

 今天写一篇友盟的笔记,介绍一下简单的集成与使用。ios

集成与配置,白名单这些就不说了安全

# 集成微信(完整版14.4M)
pod 'UMCShare/Social/WeChat'
# 集成QQ/QZone/TIM(完整版7.6M)
pod 'UMCShare/Social/QQ'
# U-Share SDK UI模块(分享面板,建议添加)
pod 'UMCShare/UI'
复制代码

AppDelegate配置
bash

导入头文件#import <UShareUI/UShareUI.h>微信

//  *****************    友盟注册    *****************  //
    /* 打开日志 */
    [[UMSocialManager defaultManager] openLog:YES];
    // 打开图片水印
    [UMSocialGlobal shareInstance].isUsingWaterMark = YES;
    [UMSocialGlobal shareInstance].isClearCacheWhenGetUserInfo = NO;
    [[UMSocialGlobal shareInstance] setIsUsingHttpsWhenShareContent:NO];
    /* 设置友盟appkey */
    [[UMSocialManager defaultManager] setUmSocialAppkey:@"5a530968b27b0a160e000240"];
    [self configUSharePlatforms];
    [self confitUShareSettings];
    //  *****************    友盟注册    *****************  //
复制代码

#pragma mark - 友盟- (void)confitUShareSettings
{
    /*
     * 打开图片水印
     */
    [UMSocialGlobal shareInstance].isUsingWaterMark = YES;
    
    /*
     * 关闭强制验证https,可容许http图片分享,但须要在info.plist设置安全域名
     <key>NSAppTransportSecurity</key>
     <dict>
     <key>NSAllowsArbitraryLoads</key>
     <true/>
     </dict>
     */
//    [UMSocialGlobal shareInstance].isUsingHttpsWhenShareContent = NO;
    
}

- (void)configUSharePlatforms
{
    /*
     设置微信的appKey和appSecret
     [微信平台从U-Share 4/5升级说明]
     */
    [[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_WechatSession appKey:@"wx854582abda4b81b0" appSecret:@"0919dcccd534408af7e230fd5db174c0" redirectURL:nil];
    /*
     * 移除相应平台的分享,如微信收藏
     */
    [[UMSocialManager defaultManager] removePlatformProviderWithPlatformTypes:@[@(UMSocialPlatformType_WechatFavorite)]];
    
    /* 设置分享到QQ互联的appID
     * U-Share SDK为了兼容大部分平台命名,统一用appKey和appSecret进行参数设置,而QQ平台仅需将appID做为U-Share的appKey参数传进便可。
     100424468.no permission of union id
     [QQ/QZone平台集成说明]http://dev.umeng.com/social/ios/%E8%BF%9B%E9%98%B6%E6%96%87%E6%A1%A3#1_3
     */
    [[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_QQ appKey:@"1106653164" appSecret:nil redirectURL:nil];
    
    /* 支付宝的appKey */
    [[UMSocialManager defaultManager] setPlaform: UMSocialPlatformType_AlipaySession appKey:@"2015111700822536" appSecret:nil redirectURL:@"http://mobile.umeng.com/social"];
    
}

- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application {
    [[SDImageCache sharedImageCache] clearMemory];
}
复制代码

微信登陆app

- (void)getAuthWithUserInfoFromWechat
{
    [[UMSocialManager defaultManager] getUserInfoWithPlatform:UMSocialPlatformType_WechatSession currentViewController:nil completion:^(id result, NSError *error) {
        if (error) {
            ZJLog(@"微信error=%@",error);
            [MBProgressHUD showError:@"登陆失败"];
        } else {
            UMSocialUserInfoResponse *resp = result;
            
            // 受权信息
            ZJLog(@"Wechat uid: %@", resp.uid);
            ZJLog(@"Wechat openid: %@", resp.openid);
            ZJLog(@"Wechat unionid: %@", resp.unionId);
            ZJLog(@"Wechat accessToken: %@", resp.accessToken);
            ZJLog(@"Wechat refreshToken: %@", resp.refreshToken);
            ZJLog(@"Wechat expiration: %@", resp.expiration);
            
            // 用户信息
            ZJLog(@"Wechat name: %@", resp.name);
            ZJLog(@"Wechat iconurl: %@", resp.iconurl);
            ZJLog(@"Wechat gender: %@", resp.unionGender);
            // 第三方平台SDK源数据
            ZJLog(@"Wechat originalResponse: %@", resp.originalResponse);
            [self wechatopenid];
        }
    }];
}
复制代码

QQ登陆ide

- (void)getAuthWithUserInfoFromQQ
{
    [[UMSocialManager defaultManager] getUserInfoWithPlatform:UMSocialPlatformType_QQ currentViewController:nil completion:^(id result, NSError *error) {
        if (error) {
            ZJLog(@"微信error=%@",error);
            [MBProgressHUD showError:@"登陆失败"];
        } else {
            UMSocialUserInfoResponse *resp = result;
            
            // 受权信息
            ZJLog(@"QQ uid: %@", resp.uid);
            ZJLog(@"QQ openid: %@", resp.openid);
            ZJLog(@"QQ unionid: %@", resp.unionId);
            ZJLog(@"QQ accessToken: %@", resp.accessToken);
            ZJLog(@"QQ expiration: %@", resp.expiration);
            
            // 用户信息
            ZJLog(@"QQ name: %@", resp.name);
            ZJLog(@"QQ iconurl: %@", resp.iconurl);
            ZJLog(@"QQ gender: %@", resp.unionGender);
            // 第三方平台SDK源数据
            ZJLog(@"QQ originalResponse: %@", resp.originalResponse);
            [self QQopenid];
        }
    }];
}
复制代码

主要是获取用户的基本信息以及openid和token,而后根据本身的业务逻辑与后台对接。ui

分享url

[UMSocialUIManager setPreDefinePlatforms:@[@(UMSocialPlatformType_Sina),@(UMSocialPlatformType_QQ),@(UMSocialPlatformType_WechatSession)]];
    [UMSocialUIManager showShareMenuViewInWindowWithPlatformSelectionBlock:^(UMSocialPlatformType platformType, NSDictionary *userInfo) {
        // 根据获取的platformType肯定所选平台进行下一步操做
        [weakSelf shareTextToPlatformType:platformType];
    }];
复制代码

//分享文本
- (void)shareTextToPlatformType:(UMSocialPlatformType)platformType
{
    //建立分享消息对象
    UMSocialMessageObject *messageObject = [UMSocialMessageObject messageObject];
    //建立图片内容对象
    UMShareImageObject *shareObject = [[UMShareImageObject alloc] init];
    shareObject.title = @"";
    //若是有缩略图,则设置缩略图
    shareObject.thumbImage = [UIImage imageNamed:@"icon"];
    [shareObject setShareImage:@"http://192.168.0.60:8040/img/666.jpg"];
    //设置文本
    messageObject.text = @"这是分享";
    messageObject.title = @"title";
    //分享消息对象设置分享内容对象
    messageObject.shareObject = shareObject;
    //调用分享接口
    [[UMSocialManager defaultManager] shareToPlatform:platformType messageObject:messageObject currentViewController:nil completion:^(id data, NSError *error) {
        ZJLog(@"");
        
        if (error) {
            ZJLog(@"************Share fail with error %@*********",error);
            [self alertWithError:error];
        }else{
            if ([data isKindOfClass:[UMSocialShareResponse class]]) {
                UMSocialShareResponse *resp = data;
                //分享结果消息
                ZJLog(@"response message is %@",resp.message);
                //第三方原始返回的数据
                ZJLog(@"response originalResponse data is %@",resp.originalResponse);
                [MBProgressHUD showSuccess:@"分享成功"];
            }else{
                ZJLog(@"response data is %@",data);
            }
        }
    }];
}
复制代码

分享面板空白?spa

检查白名单是否出错?Other Link Flag 加了-ObjC?URL Schemes是否设置?日志

我的建议仍是自定义分享面板好看一些,自带的不是很好看

相关文章
相关标签/搜索