x***@hotmail.com
x***@hotmail.com
  • 发布:2022-01-25 12:06
  • 更新:2022-03-07 18:17
  • 阅读:499

【报Bug】IOS下无法唤起微博

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: Windows 10

HBuilderX类型: 正式

HBuilderX版本号: 3.3.9

手机系统: iOS

手机系统版本号: iOS 14

手机厂商: 苹果

手机机型: iPhone6s,iPhoneXR

页面类型: vue

vue版本: vue2

打包方式: 云端

项目创建方式: HBuilderX

App下载地址或H5⽹址: https://apps.apple.com/cn/app/%E8%8F%A0%E8%90%9D%E6%B4%BE/id1599755787

示例代码:
shareHandle(){  
    let msg = {  
        type: 'web',  
        href: 'https://www.baidu.com',  
        content: '我正在使用HBuilderX开发uni-app,赶紧跟我一起来体验!' // 分享消息的文字内容----微信必填  
    };  
    this.shareWeb('sinaweibo',msg)  
}  
shareWeb(provider, msg) {  
        // #ifdef APP-PLUS  
        const result = {}  
        return new Promise((resolve, reject) => {  
            plus.share.getServices(  
                function(services) {  
                    let shares = ''  
                    services.forEach((element) => {  
                        if (element.id == provider) {  
                            shares = element  
                        }  
                    })  
                    if (provider != 'sinaweibo') {  
                        // 新浪微博没装客户端时可以直接调用网页来分享,所以新浪微博不须要去判断有没有客户端  
                        if (!shares.nativeClient) {  
                            // 如果不存在对应的分享客户端,引导用户安装客户端  
                            result.success = false  
                            result.msg = '分享失败:您还未安装客户端!'  
                            resolve(result)  
                            return  
                        }  
                    }  
                    if (!shares.authenticated) {  
                        // 如果还未认证(QQ和微博),先去认证  
                        shares.authorize(  
                            function() {  
                                shares.send(  
                                    msg,  
                                    function() {  
                                        result.success = true  
                                        result.msg = '分享成功!'  
                                        resolve(result)  
                                    },  
                                    function(error) {  
                                        result.success = false  
                                        result.msg = '分享失败:' + error.message.split('http')[0]  
                                        resolve(result)  
                                    }  
                                )  
                            },  
                            function(error) {  
                                result.success = false  
                                result.msg = '获取授权失败:' + error.message.split('http')[0]  
                                resolve(result)  
                            }  
                        )  
                    } else {  
                        // 如果已经认证(微信),可以直接调用分享,  
                        uni.showModal({  
                            title: '即将进行分享',  
                            content: '即将进行分享',  
                            success: function (res) {  
                            if (res.confirm) {  
                            shares.send(  
                                msg,  
                                function() {  
                                    result.success = true  
                                    result.msg = ''  
                                    resolve(result)  
                                },  
                                function(error) {  
                                    result.success = false  
                                    result.msg = '分享失败:' + error.message.split('http')[0]  
                                    resolve(result)  
                                }  
                            )   
                            } else if (res.cancel) {  
                                console.log('用户点击取消');  
                            }  
                        }  
                    });  
                }  
            },  
            function(error) {  
                result.success = false  
                result.msg = '获取授权失败:' + error.message.split('http')[0]  
                resolve(result)  
            }  
        )  
    })  
// #endif  
}

操作步骤:

1.安装微博app
2.打开开发app,点击微博分享。成功唤起微博app
3.登陆微博app
4在开发app中再次点击微博分享后无反应,无法调用HTML5+的ShareService.send()方法(ShareService.send()的成功和失败回调函数皆不运行)且没有唤起微博app

预期结果:

登录微博APP后在开发APP中点击微博分享能成功唤起微博APP

实际结果:

登录微博APP后在开发APP中点击微博分享无法唤起微博APP

bug描述:

IOS分享至微博无法唤起微博,而微信及QQ都可以唤起
在手机安装微博APP(微博APP已登录)的情况下,在IOS中调用HTML5 的ShareService.send()方法无法唤起微博APP(使用uni.share()也不行)
manifest.json=>APP模块配置=>分享=>新浪微博分享中的APPkey、redirect_uri、IOS通用链接均已配置(与微博开房平台中对应信息完全一致 )

2022-01-25 12:06 负责人:iOS_DJX 分享
已邀请:
iOS_DJX

iOS_DJX

提供一下 UNI_ID 吧 后边好像都没点上 微博分享 页面随着动 我看着

  • x***@hotmail.com (作者)

    UNI7369C00

    实际上是点上的,如果在代码shares.send()前一行中插入uni.showModal()的话是可以成功弹框

    2022-01-25 14:26

  • iOS_DJX

    回复 x***@hotmail.com: 是个Bug 下个版本修复

    2022-01-25 18:55

iOS_DJX

iOS_DJX

你提供一个能跑起来的 示例代码

  • x***@hotmail.com (作者)

    问题描述中的示例代码已更新

    2022-01-25 16:27

  • x***@hotmail.com (作者)

    同一套代码能在安卓APP中正常唤起微博APP并分享

    2022-01-25 16:29

DCloud_UNI_Anne

DCloud_UNI_Anne

HBuilderX alpha 3.4.0+ 已修复该问题

该问题目前已经被锁定, 无法添加新回复