美文网首页iOS学习包
Swift-友盟分享

Swift-友盟分享

作者: GoGooGooo | 来源:发表于2016-01-04 12:47 被阅读972次

1. 下载并安装SDK

2.1 下载SDK
最新版SDK下载地址:http://dev.umeng.com/social/ios/sdk-download


2.2 加入SDK
UMSocial_Sdk_x.x.x的文件夹以及UMSocial_Sdk_Extra_Frameworks目录下的SinaSSO文件夹拖入工程目录:

2.3 创建桥接
具体如何桥接这里就不说明了,我们需要在桥接文件中包含以下两个头文件

#import "UMSocial.h"
#import "UMSocialSinaSSOHandler.h"

2.4 设置AppKey
在AppDelegate内设置友盟AppKey

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

    // 设置Appkey
    UMSocialData.setAppKey("5608de9de0f55afaae0018e6")
    return true
}

2.5 添加实现代码
在新浪微博登录按钮中实现下面的方法

let snsPlatform: UMSocialSnsPlatform = UMSocialSnsPlatformManager.getSocialPlatformWithName(UMShareToSina)

snsPlatform.loginClickHandler(self, UMSocialControllerService.defaultControllerService(), true, {response in

    if response.responseCode == UMSResponseCodeSuccess {

        let snsAccount:UMSocialAccountEntity = UMSocialAccountManager.socialAccountDictionary()[UMShareToSina] as! UMSocialAccountEntity

        print("username is \(snsAccount.userName), uid is \(snsAccount.usid), token is \(snsAccount.accessToken) url is \(snsAccount.iconURL)")
    }
})

在授权完成后调用获取用户信息的方法

//获取accestoken以及新浪用户信息,得到的数据在回调Block对象形参respone的data属性
UMSocialDataService.defaultDataService().requestSnsInformation(UMShareToSina) { (response) -> Void in
    print(response.data)
}

3. SSO配置

使用SSO授权方式,在用户安装了微博客户端并登录时,可以在分享过程中不需要输入账号密码,直接通过微博客户端授权,随后进行网页分享,免去了用户输入密码的过程。 在用户未安装客户端时,则自动跳转到网页授权方式,微博SSO授权友盟提供了微博原生SDK与非原生SDK两种方式,本文介绍的是微博原生SDK。

3.1 添加相关系统库文件
在other linker flags增加-ObjC 选项,


并在Xcode中打开工程配置文件,选择“Linked Frameworks and Libraries”一栏,点击“+”图标添加下列库文件:添加


ImageIO.framework Security.framework libiconv.dylib SystemConfiguration.framework CoreGraphics.Framework libsqlite3.dylib CoreTelephony.framework libstdc++.dylib libz.dylib

3.2 添加URL schemes
在工程->info->URL Types中添加 URL Schemes,格式为“wb”+新浪appkey,例如“wb126663232”

3.3 在AppDelegate文件集成相应的开关方法:
http://open.weibo.com/apps

  func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {址,“http://sns.whalecloud.com/sina2/callback”,这里可以传nil
    UMSocialSinaSSOHandler.openNewSinaSSOWithAppKey("新浪appkey", redirectURL: "http://sns.whalecloud.com/sina2/callback")

    return true
}

3.4 在AppDelegate文件里面实现下面的系统回调方法

    func application(application: UIApplication, handleOpenURL url: NSURL) -> Bool {
        return UMSocialSnsService.handleOpenURL(url)
    }
    func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool {
        return UMSocialSnsService.handleOpenURL(url)
    }}

4. 适配iOS9系统

  • iOS9网络传输适配

在info.plist的App Transport Security Settings下新增Allow Arbitrary Loads并设置为YES,指定所有HTTP连接都可正常请求

<key>NSAppTransportSecurity</key>
<dict>
  <key>NSAllowsArbitraryLoads</key>
  <true/>
</dict>
  • 应用跳转白名单

如果你的应用使用了如SSO授权登录或跳转分享功能,在iOS9下就需要增加一个可跳转的白名单,指定对应跳转App的URL Scheme,否则将在第三方平台判断是否跳转时用到的canOpenURL时返回NO,进而只进行webview授权或授权/分享失败。
同样在info.plist的LSApplicationQueriesSchemes下增加:

<key>LSApplicationQueriesSchemes</key>
<array>
<!-- 新浪微博 URL Scheme 白名单-->
  <string>sinaweibohd</string>
  <string>sinaweibo</string>
  <string>sinaweibosso</string>
  <string>weibosdk</string>
  <string>weibosdk2.5</string>
</array>

提示,如果程序报以下错误:

ld: ‘/Users/**/Framework/SDKs/PolymerPay/Library/mobStat/lib**SDK.a(**ForSDK.o)’ does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target. for architecture arm64

可以在Build Settings中将Enable Bitcode设置为No

最后附上示例Demo的github地址:https://github.com/laichunhui/UMSocialLogin_Sina

相关文章

  • Swift-友盟分享

    1. 下载并安装SDK 2.1 下载SDK最新版SDK下载地址:http://dev.umeng.com/soci...

  • Swift-友盟分享

    将下载的SDK拖入工程中 注:以上是需要手动导入的系统库,其中libUMSocial_Sdk_4.4.a在UMSo...

  • swift-友盟分享

    分享、推送、支付不知做过多少遍了,却从来没总结过,然后每次再做的时候又是各种看文档,很是繁琐,索性抽空来总结一下,...

  • Swift-友盟分享登录集成

    之前写了OC版的友盟分享,现在来份Swift的(注:Siwft的是有坑的) pod导入 桥接文件(注:现在注册友盟...

  • android-友盟如何在不同平台上分享不同数据

    友盟如何在不同平台上分享不同数据 首先我们先看下友盟的默认分享友盟默认提供了默认的分享,displaylist是不...

  • 应用资料获取-友盟密钥获取方法

    本文讲述友盟密钥应该如何获取 1.前往友盟官网,选到友盟分享模块,可以直接点击前往:点击前往友盟分享 2.点击登录...

  • Android-->友盟分享/登录快速集成库

    友盟分享/登录快速集成库 友盟分享快速集成库 本库基于友盟6.4.4的分享模块版本开发. 暂时只集成了, QQ和微...

  • iOS10之友盟分享6.8.0

    之前适配iOS9 是友盟分享5.0.1版本,请移步:友盟分享5.0.1 更新使用的友盟分享6.0.3版本至目前最新...

  • 友盟分享总结 coder_hong

    友盟分享 友盟官网集成文档 首先注册友盟账号 SDK下载Snip20160616_2.png 友盟个人中心中创建一...

  • Swift-友盟分享UI面板之坑

    Swift桥接友盟,希望调整面板标题顺序,直接填写枚举对应数字即可: 友盟之swift坑,已踩。

网友评论

  • 正在输入__:按照上面写的调用 openNewSinaSSOWithAppKey 会 崩溃 错误提示是reason: '-[UMSocialSnsHandler setSinaType:]: unrecognized selector sent to instance 0x7fa340f3eaa0' 这事什么问题啊

本文标题:Swift-友盟分享

本文链接:https://www.haomeiwen.com/subject/vfqahttx.html