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

2018-05-12  本文已影响0人  pengweijun

这百分之一万是 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;
    }];
}

上一篇 下一篇

猜你喜欢

热点阅读