国内4G网-ShareSDK分享墙外App回调问题

  • 背景
    昨晚临近发版测试提了个Bug说国内4G网络(无翻墙无代理)的时候点击分享到Twitter/YouTube没反应

  • 第一反应

这百分之一万是 ShareSDK 没给我回调导致控制开关变量isSharing没有发生变化,所以被判断为仍在分享ing所以后续点击无效(也就是每次点击分享根据isSharing为YES则点了没反应,当然如果喜欢弹个toast也是可以的)

临时解决方案

- (void)setIsSharing:(BOOL)isSharing{
      if (!isSharing) {
          self.delayMarker = -1;
      }
    _isSharing = isSharing;
}
- (void)processDelaySetting{
    if (self.delayMarker == -1) {
        self.delayMarker = 1;
        uintptr_t maxToleratedTime = 10;
        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(maxToleratedTime * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
            if (self.isSharing) {
                self.isSharing = NO;
                self.delayMarker = -1;
            }
        });
    }
}

- (void)shareSDKAction{
    if (self.isSharing){
        return;
    }

    [self processDelaySetting]; 

    [ShareSDK share:blablablabla block:^(BOOL success, id callBackInfo, NSError * error){ //大概就是类似这样的方法
        self.isSharing = NO;
    }];
}
  • 优化方案
- (void)setIsSharing:(BOOL)isSharing{
    if (!isSharing) {
        if (self.timer) {
            dispatch_cancel(self.timer);
            self.timer = nil;
        }
    }
    _isSharing = isSharing;
}
 
- (void)processDelaySetting{
    @weakify(self);
    uintptr_t maxToleratedTime = 10;
    self.timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, dispatch_get_global_queue(0, 0));
    dispatch_source_set_timer(self.timer, DISPATCH_TIME_NOW, (int64_t)(maxToleratedTime * NSEC_PER_SEC), 0);
    dispatch_source_set_event_handler(self.timer, ^{
        @strongify(self);
        if (self.isSharing) {
            self.isSharing = NO;
        }
    });
    dispatch_resume(self.timer); //开始计时ss
}
- (void)shareSDKAction{
    if (self.isSharing){
        return;
    }

    [self processDelaySetting]; 

    [ShareSDK share:blablablabla block:^(BOOL success, id callBackInfo, NSError * error){ //大概就是类似这样的方法
        self.isSharing = NO;
    }];
}
  • 实际真心想要的方案
    心里还是不甘心,想着这没道理啊为毛不给我回调,不太科学。
    度娘了下 ,在 SDK官网 技术客服一号叫 xxxx大圣 (应该是个西游记小迷弟吧),直击痛点问大圣为嘛不给我回调,大圣说应该callbackUrl和开放平台配置的链接不一致导致的于是我跑去 推特官网 登录进去核对了项目中授权认证的redirectUri,嗯,是一毛一样的。一号大圣说帮我找个iOS开发看看(因为大圣是Android画风的)
    很快二号就出场了,描述完我的诉求,二号吐槽
    国内4G网-ShareSDK分享墙外App回调问题_第1张图片
    WechatIMG49.png

    于是这个问题就姑且看起来告一段落了,跟老大那边反馈了下进展,备注了下JIRA

你可能感兴趣的:(国内4G网-ShareSDK分享墙外App回调问题)