关闭

基于友盟使用Swift3.0在Xcode8.0beta版中集成分享功能和第三方登录

标签: 友盟分享第三方登录Swift分享和登录分享和第三方登录常见问题Swift3.0分享和登录
2953人阅读 评论(0) 收藏 举报
分类:

基于友盟使用Swift3.0集成分享功能和第三方登录

 很多APP都有分享的功能和第三方登录,今天就基于友盟的基础上快速的集成一下。

第一、根据官网的文档配置工程,这里我选择利用CocoaPods配置所需文件。CocoaPods的使用教程

第二、所需平台的配置信息配置(略,可以参考官方文档)

第三、iOS9适配及其其他一些相关配置

1、iOS9网络适配 --> 在info.plist中添加

<key>NSAppTransportSecurity</key>
     <dict>
           <key>NSAllowsArbitraryLoads</key>
	   <true/>
     </dict>

2、在info.plist中配置白名单,这里是列出了部分,有需要的自己添加对应的平台

<key>LSApplicationQueriesSchemes</key>
	<array>
		<string>sinaweibo</string>
		<string>sinaweibohd</string>
		<string>weibosdk2.5</string>
		<string>weibosdk</string>
		<string>sinaweibosso</string>
		<string>mqqOpensdkSSoLogin</string>
		<string>mqzone</string>
		<string>sinaweibo</string>
		<string>alipayauth</string>
		<string>alipay</string>
		<string>safepay</string>
		<string>mqq</string>
		<string>mqqapi</string>
		<string>mqqopensdkapiV3</string>
		<string>mqqopensdkapiV2</string>
		<string>mqqapiwallet</string>
		<string>mqqwpa</string>
		<string>mqqbrowser</string>
		<string>wtloginmqq2</string>
		<string>weixin</string>
		<string>wechat</string>
	</array>

3、在Info->URL Types 中添加 URL Schemes,这一步很接单具体见官方文档

第四、代码编写
1、在桥接文件中导入对应的头文件
2、在AppDelegate中配置信息
//设置友盟社会化组件appkey
        UMSocialData.setAppKey("youkey")
        
        //设置微信AppId、appSecret,分享url
        UMSocialWechatHandler.setWXAppId("appid", appSecret: "youSecret", url: "url")
        
        //设置手机QQ 的AppId,Appkey,和分享URL,需要#import "UMSocialQQHandler.h"
        UMSocialQQHandler.setQQWithAppId("appid", appKey: "appkey", url: "url")

        //打开新浪微博的SSO开关,设置新浪微博回调地址,这里必须要和你在新浪微博后台设置的回调地址一致。需要 #import "UMSocialSinaSSOHandler.h"
        UMSocialSinaSSOHandler.openNewSinaSSO(withAppKey: "key", secret: "secret", redirectURL: "url")
        
        // 隐藏指定没有安装客户端的平台
        UMSocialConfig.hiddenNotInstallPlatforms([UMShareToWechatSession, UMShareToWechatTimeline, UMShareToQzone, UMShareToQQ, UMShareToSina])
// 回调方法
func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: AnyObject) -> Bool {
     let result = UMSocialSnsService.handleOpen(url)
     return result;
}
3、配置使用默认UI分享按钮触发的事件
// 点击分享按钮触发的事件,默认的UI界面分享
@IBAction func shareBtn(_ sender: AnyObject) {
    UMSocialData.default().extConfig.title = "分享的title"
    UMSocialData.default().extConfig.qqData.url = url
    UMSocialData.default().extConfig.qzoneData.url = url
    UMSocialData.default().extConfig.wechatSessionData.url = url
    UMSocialData.default().extConfig.wechatTimelineData.url = url
    UMSocialData.default().urlResource.setResourceType(UMSocialUrlResourceTypeDefault, url: url)
        
    UMSocialSnsService.presentSnsIconSheetView(self, appKey: "友盟的appkey", shareText: "分享连接", shareImage: UIImage.init(named: "pic.png"), shareToSnsNames: [UMShareToQQ, UMShareToQzone, UMShareToWechatSession, UMShareToWechatTimeline, UMShareToSina], delegate: self)</span>
    }
4、分享的代理监测
// 分享回调代理。如果不想监测可以把上面的代理设置为nil
extension ViewController: UMSocialUIDelegate {
    // 各个页面执行授权完成、分享完成、或者评论完成时的回调函数
    func didFinishGetUMSocialData(inViewController response: UMSocialResponseEntity!) {
        print("didFinishGetUMSocialDataInViewController -- 各个页面执行授权完成、分享完成、或者评论完成时的回调函数")
        
        
        if response.responseCode == UMSResponseCodeSuccess {
            print("分享成功 response = \(response)")
            
        }
    }

    // 自定义关闭授权页面事件
    func closeOauthWebViewController(_ navigationCtroller: UINavigationController!, socialControllerService: UMSocialControllerService!) -> Bool {
        print("closeOauthWebViewController -- 自定义关闭授权页面事件")
        return true
    }
    
    // 关闭当前页面之后
    func didCloseUIViewController(_ fromViewControllerType: UMSViewControllerType) {
        print("didCloseUIViewController -- 关闭当前页面之后")
    }
    
    // 点击分享平台
    func didSelectSocialPlatform(_ platformName: String!, with socialData: UMSocialData!) {
        print("didSelectSocialPlatform -- 点击分享平台")
    }
}
5.自定义界面按钮分享,将一下代码写在对应的按钮事件下面
方式一:使用下面的代码即可,修改平台名字即可实现其他方式的分享
// 新浪的连接直接写入到分享文字中就行
UMSocialControllerService.default().setShareText("text", shareImage: UIImage(named: "pic.png"), socialUIDelegate: nil)
UMSocialSnsPlatformManager.getSocialPlatform(withName: UMShareToSina).snsClickHandler(self, UMSocialControllerService.default(), true)
方式二:
let resource = UMSocialUrlResource.init(snsResourceType: UMSocialUrlResourceTypeDefault, url: "url")
     UMSocialDataService.default().postSNS(WithTypes:"types", content: "分享内容", image: UIImage(named: "pic.png"), location: nil, urlResource: resource, presentedController: self) { (shareResponse) in
         if shareResponse.responseCode == UMSResponseCodeSuccess {
             print("分享成功")
                
         }
     }
第五、第三方登录
1、QQ登录
@IBAction func clickQQLogin(_ sender: AnyObject) {
        let snsPlatform = UMSocialSnsPlatformManager.getSocialPlatform(withName: UMShareToQQ)
        
        snsPlatform?.loginClickHandler(self, UMSocialControllerService.default(), true, {response in
            if response?.responseCode == UMSResponseCodeSuccess {
                
                // 获取信息与自己的登录系统对接数据
                let dataDic: NSDictionary = UMSocialAccountManager.socialAccountDictionary()
                print("QQ ------  dataDic = \(dataDic)")
                
                let snsAccount = dataDic.value(forKey: (snsPlatform?.platformName)!)
                print("QQ ------- snsAccount = \(snsAccount)")
            }
        })
        
    }
2、微信登录
@IBAction func clickWeChatLogin(_ sender: AnyObject) {
        let snsPlatform = UMSocialSnsPlatformManager.getSocialPlatform(withName: UMShareToWechatSession)
        
        snsPlatform?.loginClickHandler(self, UMSocialControllerService.default(), true, {response in
            if response?.responseCode == UMSResponseCodeSuccess {
                
                // 获取信息与自己的登录系统对接数据
                let dataDic: NSDictionary = UMSocialAccountManager.socialAccountDictionary()
                print("WeChat ------ dataDic = \(dataDic)")
                
                let snsAccount = dataDic.value(forKey: (snsPlatform?.platformName)!)
                print("WeChat ------  snsAccount = \(snsAccount)")
            }
        })
    }
3、新浪登录
@IBAction func clickSinaLogin(_ sender: AnyObject) {
        let snsPlatform = UMSocialSnsPlatformManager.getSocialPlatform(withName: UMShareToSina)
        
        snsPlatform?.loginClickHandler(self, UMSocialControllerService.default(), true, {response in
            if response?.responseCode == UMSResponseCodeSuccess {
                
                // 获取信息与自己的登录系统对接数据
                let dataDic: NSDictionary = UMSocialAccountManager.socialAccountDictionary()
                print("Sina ------  dataDic = \(dataDic)")
                
                let snsAccount = dataDic.value(forKey: (snsPlatform?.platformName)!)
                print("Sina ------- snsAccount = \(snsAccount)")
            }
        })
    }
第六、在集成分享的过程中经常遇到的问题
1、警告
object file (Pods/UmengSocialCOM/Umeng_SDK_Social_iOS_ARM64_5.2.1/UMSocial_Sdk_Extra_Frameworks/AlipayShare/libAPOpenSdk.a(APOpenAPIObject.o)) was built for newer iOS version (8.1) than being linked (8.0)
将项目的工程target的版本改为最小8.1 就行了
2、控制台打印如下类似信息
-canOpenURL: failed for URL: "weixin:" - error: "(null)
有可能你没有配置白名单,也有可能是你没有安装对应平台

以上便是分享和三方登录的基本流程了
 






0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

swift3.0友盟分享

经过(一)的讲解,大家应该可以按照友盟提供的测试账号可以集成友盟分享了,友盟目前集合了18个APP共27种分享,可以授权的有10个App:微信、QQ、新浪微博、腾讯微博、人人网、豆瓣、Facebook...
  • walkerwqp
  • walkerwqp
  • 2017-04-25 10:10
  • 881

swift3.0集成友盟分享sdk_6.0.3(二)

经过(一)的讲解,大家应该可以按照友盟提供的测试账号可以集成友盟分享了,友盟目前集合了18个APP共27种分享,可以授权的有10个App :微信、QQ、新浪微博、腾讯微博、人人网、豆瓣、Faceboo...
  • callzjy
  • callzjy
  • 2016-11-24 01:32
  • 1441

shareSDK遇到的问题及解决方法

第一个,找不到 /**      连接QQ空间应用以使用相关功能,此应用需要引用QZoneConnection.framework      http://connect.qq.com/...
  • ralbatr
  • ralbatr
  • 2014-07-09 10:56
  • 14124

swift3.0使用友盟分享遇到无法调出分享界面的解决办法

最近使用了友盟的分享,项目是swift语言的版本,但是发现友盟的sdk版本是oc的,首先有种不详的预感啊,好吧,但是项目总是要继续完成的,按照官方文档的指点一步一步的集成,发现原来也不麻烦,无外乎添加...
  • June_email
  • June_email
  • 2016-12-22 14:24
  • 679

Swift使用友盟分享

1注册友盟账号 2添加应用 填写应用信息 得到AppKey 3使用CocoaPods集成友盟分享 4设置AppKey 5微信分享 注册微信应用 获取AppID和AppSecret 6添加微信AppID...
  • u013255127
  • u013255127
  • 2016-05-04 15:46
  • 1816

iOS - 系统自带的分享功能

先导入系统自带的框架 #import 直接示例代码,以新浪微博平台为例 -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)even...
  • lincsdnnet
  • lincsdnnet
  • 2016-04-20 14:44
  • 3844

iOS swift 分享

ShareSDK是提供社交化功能的一个组件,更多了解请访问官网。TYAlertController是与上一篇中SweetAlert功能比较类似的一个类库,不过TYAlertController可以自定...
  • mo_xiao_mo
  • mo_xiao_mo
  • 2016-09-21 11:11
  • 454

swift3.0集成友盟分享sdk_6.0.3(一)

本来用图来描述集成全过程和需要注意的地方(作者截了十四张图来说明全过程,本文为小白准备,大牛大神绕道) 准备: 环境 Xcode Version 8.1 beta (8T47) 下载的包为...
  • callzjy
  • callzjy
  • 2016-11-23 05:12
  • 2028

swift3.0 ios10.0 友盟推送

// //  AppDelegate+UMeng.swift //  FriendCoding // //  Created by qingxun on 2017/7/6. //  Copyright...
  • lvchenqiang_
  • lvchenqiang_
  • 2017-07-06 15:58
  • 501

libAPOpenSdk.a(APOpenAPIObject.o)' does not contain bitcode.

CocoaPods使用UMengSocial时报错 方案:找到buildSetting–Bitcode设置为No.
  • u011018979
  • u011018979
  • 2017-07-31 14:36
  • 171
    个人资料
    • 访问:86203次
    • 积分:1497
    • 等级:
    • 排名:千里之外
    • 原创:61篇
    • 转载:4篇
    • 译文:1篇
    • 评论:20条
    最新评论