ShareSDK

本文详细介绍了如何在iOS应用中集成微信分享功能,并展示了如何配置微信朋友圈的分享内容及自定义导航栏样式。通过实现ShareSDK,开发者可以轻松地将微信分享集成到自己的应用中,同时自定义分享信息,提升用户体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于ShareSDK

官网

在分享菜单里去掉微信收藏的图标

 //微信好友
        ShareSDK.connectWeChatSessionWithAppId(WeiXinKeys.AppId, appSecret: WeiXinKeys.AppKey, wechatCls: WXApi.self)
        //微信朋友圈
        ShareSDK.connectWeChatTimelineWithAppId(WeiXinKeys.AppId, appSecret: WeiXinKeys.AppKey, wechatCls: WXApi.self)
        //微信登陆的时候需要初始化 ,这个方法把微信好友,微信朋友圈,收藏都初始化了。微信好友,微信朋友圈,微信收藏就都开启了,也就是在分享菜单那里就都有图标显示了
//        ShareSDK.connectWeChatWithAppId(WeiXinKeys.AppId, wechatCls: WXApi.self)
//        ShareSDK.connectWeChatWithAppId(WeiXinKeys.AppId, appSecret: WeiXinKeys.AppKey, wechatCls: WXApi.self)       

初始化分享平台:举例

    //初始化各个平台
    func initSharePlatform(){
        ShareSDK.registerApp(ShareSDKKeys.AppKey)
        //微信好友
        ShareSDK.connectWeChatSessionWithAppId(WeiXinKeys.AppId, appSecret: WeiXinKeys.AppKey, wechatCls: WXApi.self)
        //微信朋友圈
        ShareSDK.connectWeChatTimelineWithAppId(WeiXinKeys.AppId, appSecret: WeiXinKeys.AppKey, wechatCls: WXApi.self)
        //微信登陆的时候需要初始化 ,这个方法把微信好友,微信朋友圈,收藏都初始化了。微信好友,微信朋友圈,微信收藏就都开启了,也就是在分享菜单那里就都有图标显示了
//        ShareSDK.connectWeChatWithAppId(WeiXinKeys.AppId, wechatCls: WXApi.self)
//        ShareSDK.connectWeChatWithAppId(WeiXinKeys.AppId, appSecret: WeiXinKeys.AppKey, wechatCls: WXApi.self)
//        ShareSDK.connectQQWithQZoneAppKey(QQKeys.AppId, qqApiInterfaceCls: QQApiInterface.self, tencentOAuthCls: TencentOAuth.self)
        ShareSDK.connectQQWithAppId(QQKeys.AppId, qqApiCls: QQApiInterface.self)
        ShareSDK.connectQZoneWithAppKey(QQKeys.AppId, appSecret: QQKeys.AppKey, qqApiInterfaceCls: QQApiInterface.self, tencentOAuthCls: TencentOAuth.self)
        ShareSDK.connectSinaWeiboWithAppKey(SinaKeys.AppKey, appSecret: SinaKeys.AppSecret, redirectUri:  SHGTHelper.appItunesURLString(), weiboSDKCls: WeiboSDK.self)
        ShareSDK.connectSinaWeiboWithAppKey(SinaKeys.AppKey, appSecret: SinaKeys.AppSecret, redirectUri: SHGTHelper.appItunesURLString())

    }

配置info.plist的url types

url Schema**不要忘记在appdelgate实现openURL的方法**


分享

func action_Share(sender:AnyObject!){
        // ShareSDK
        var content : String! = SHGTHelper.appDesciption()
        var sharetitle : String! = SYHelper_CheckVersion.sharedInstance().getCurrentAppName()
        var imagePath = NSBundle.mainBundle().pathForResource("Icon-60@2x", ofType: "png")
        var publishContent : ISSContent! = ShareSDK.content(SHGTHelper.appDesciption(), defaultContent: content, image: ShareSDK.imageWithPath(imagePath), title: "分享[APP_NAME]", url: SHGTHelper.appItunesURLString(), description: nil, mediaType: SSPublishContentMediaTypeApp)//SSPublishContentMediaTypeNews
        //sina
        publishContent.addSinaWeiboUnitWithContent(SHGTHelper.appDesciption()!, image: ShareSDK.imageWithPath(imagePath))
        //微信好友
        publishContent.addWeixinSessionUnitWithType(NSNumber(int: 2) as NSNumber, content: SHGTHelper.appDesciption(), title: "分享\(sharetitle)", url:  SHGTHelper.appItunesURLString(), thumbImage: ShareSDK.imageWithPath(imagePath) as ISSCAttachment, image: ShareSDK.imageWithPath(imagePath) as ISSCAttachment, musicFileUrl: nil, extInfo: nil, fileData: nil, emoticonData: nil)
        //微信朋友圈
        publishContent.addWeixinTimelineUnitWithType(NSNumber(int: 2), content: content, title: sharetitle, url: SHGTHelper.appItunesURLString(), image: ShareSDK.imageWithPath(imagePath), musicFileUrl: nil, extInfo: nil, fileData: nil, emoticonData: nil)
        //qq
        publishContent.addQQUnitWithType(NSNumber(int: 2), content: SHGTHelper.appDesciption(), title: SYHelper_CheckVersion.sharedInstance().getCurrentAppName(), url: SHGTHelper.appItunesURLString(), image: ShareSDK.imageWithPath(imagePath))
        //创建弹出菜单容器
        var container : ISSContainer! = ShareSDK.container()
        var shareOptions : ISSShareOptions! = ShareSDK.simpleShareOptionsWithTitle("分享[APP_NAME]", shareViewDelegate: self)
        if SYHelper_Base.isPad() {
            var view : UIView = self.uivcSetting.tableview.cellForRowAtIndexPath(NSIndexPath(forRow: 3, inSection: 0))!
            container.setIPadContainerWithView(view, arrowDirect: UIPopoverArrowDirection.Any)


        }else{
            container.setIPhoneContainerWithViewController(self.viewController)


        }

        var authOptions : ISSAuthOptions! = ShareSDK.authOptionsWithAutoAuth(true, allowCallback: false, authViewStyle: SSAuthViewStyleFullScreenPopup, viewDelegate: nil, authManagerViewDelegate: self)
       //弹出分享菜单  
        ShareSDK.showShareActionSheet(container, shareList: nil, content: publishContent, statusBarTips: true, authOptions: authOptions, shareOptions: shareOptions) { (_shareType, _responseState, _platformShareInfo, _errorInfo, _flag) -> Void in
            debugPrintln("_platformShareInfo----\(_platformShareInfo)")
            debugPrintln("_errorInfo----\(_errorInfo)")
            debugPrintln("_responseState.value----\(_responseState.value)")
            if _platformShareInfo == nil {
                self.getHudView()
            }
            if _errorInfo != nil {
                self.removeHudView(isCurrent: true)
                self.getAlertTitle("\(_errorInfo.errorDescription())")
                return
            }

            if _responseState.value == SSResponseStateSuccess.value {
                self.removeHudView(isCurrent:true)

                self.getAlertTitle("祝贺你分享成功")
            }else if _responseState.value == SSResponseStateFail.value {
                self.removeHudView(isCurrent:true)

                self.getAlertTitle("分享失败")

            }else if _responseState.value == SSResponseStateCancel.value{
                self.removeHudView(isCurrent:true)
                self.getAlertTitle("分享取消")

            }
        }


    }

sina 分享时导航栏更改成自己所需的导航栏

方法:在实现ISSShareViewDelegate的类中加上viewOnWillDisplay(viewController:, shareType:)方法,在此方法中进行修改

   func viewOnWillDisplay(viewController: UIViewController!, shareType: ShareType) {
        viewController.navigationController?.navigationBar.tintColor = UIColor.whiteColor()
        viewController.navigationController?.navigationBar.barTintColor = UIColor.redColor()

    }
1 2 3 4 5 $sharesdk.shareContent($sharesdk.platformID.SinaWeibo, params, function (platform, state, shareInfo, error) { alert("state = " + state + "\nshareInfo = " + shareInfo + "\nerror = " + error); }); 一键分享 1 2 3 4 5 $sharesdk.oneKeyShareContent([$sharesdk.platformID.SinaWeibo, $sharesdk.platformID.TencentWeibo], params, function (platform, state, shareInfo, error) { alert("state = " + state + "\nshareInfo = " + shareInfo + "\nerror = " + error); }); 关于具体的分享参数名称,请参考“不同平台分享内容的详细说明”章节的说明。 用户授权 调用ShareSDK中的authorize方法可进行用户授权。代码如下: 1 2 3 4 5 $sharesdk.authorize($sharesdk.platformID.SinaWeibo, function (platform, state, error){ alert("state = " + state + "\nerror = " + error); }); 获取用户资料 调用ShareSDK中的getUserInfo来获取授权用户的信息。代码如下: 1 2 3 4 5 $sharesdk.getUserInfo($sharesdk.platformID.SinaWeibo, function (platform, state, user, error) { alert("state = " + state + "\nuser = " + user + "\nerror = " + error); }); iOS部分集成步骤(不发布iOS版本可略过此部分) 导入JS桥接的iOS版本组件 打开下载的JS包里的iOS/ShareSDKForJS/ShareSDKForJS.xcodeproj项目工程,选择ShareSDKForJS静态库运行Xcode,如图: 700px-js_doc_001.png 运行成功之后,请大家打开文件找到Build文件夹,然后进入文件中找到build/Products/Debug-iphonesimulato /libShareSDKForJS.a文件以及找到build/Products/Debug-iphonesimulator/usr/local /include/ShareSDKJSBridge.h这个文件,再将libShareSDKForJS.a和ShareSDKJSBridge.h这 2个文件导入到你的项目里,如图 700px-js_doc_002.png 注意:(如果在分享中弹不出分享的菜单,如果大家的ShareSDK.js文件是本地的,要把这个加到Build Phases里面的Copy Bundle Resources选项) 下载iOS版本ShareSDK,并导入到工程中。 登录ShareSDK的官方网站下载并解压最新版本的SDK。如果您还尚未下载,请 点击这里下载 或者访问 http://sharesdk.cn/Download 。解压后如图所示: 700px-js_doc_003 将ShareSDK导入工程中,并添加相应的依赖库。此步骤可以参考:《iOS快速集成指南》中的第一、第二步。执行完成后,如下图所示: 700px-js_doc_004.png 为UIWebView添加消息捕获 先导入ShareSDKJSBridge.h头文件。 1 #import "ShareSDKJSBridge.h" 然后给UIWebView设置一个委托对象,如: 1 webView.delegate = self; 注意:webView是UIWebView的对象实例。 最后实现shouldStartLoadWithRequest委托方法,并在方法中加入JSBridge的captureRequest方法,代码如下: 1 2 3 4 - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { return ![[ShareSDKJSBridge sharedBridge] captureRequest:request webView:webView]; } 添加完毕后就可以对工程进行运行测试。 Android部分集成步骤(不发布Android版本可略过此部分) 导入的步骤如下: 1、参考”安卓快速集成文档“章节的说明,导入ShareSDK for Android的jar库和图片、文字资源。 2、复制github上的jsdemo项目中”cn.sharesdk.js”包中的源代码复制到你的项目中。QQ截图20150304142013 3、在您WebView加载页面地址之前。调用ShareSDKUtils.prepare(webview, webviewClient); 请注意,ShareSDKUtils.prepare方法要在WebView.setWebViewClient(WebViewClinet);之后调用,而且此后不能再调用setWebViewClient方法,否则ShareSDK的初始化操作可能失败。 下面的代码来自github上的demo: Objective-C 1 2 3 4 5 6 7 8 9 10 11 12 public class MainActivity extends Activity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); WebView wvBody = new WebView(this); WebViewClient wvClient = new WebViewClient(); wvBody.setWebViewClient(wvClient); wvBody.setWebChromeClient(new WebChromeClient() { public boolean onJsAlert(WebView view, String url, String message, JsResult result) { return super.onJsAlert(view, url, message, result); } });
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值