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是否設置?日誌

我的建議仍是自定義分享面板好看一些,自帶的不是很好看

相關文章
相關標籤/搜索