美文网首页
淘口令的处理

淘口令的处理

作者: 蓝空天末 | 来源:发表于2020-11-19 14:23 被阅读0次

    前阵子项目中遇到了活动开团,开团人或参团人通过分享口令到微信等,其他人通过复制口令然后打开app,会检测口令弹出提示,去查看活动或加入组团。

    口令分享出去,在其他app粘贴或复制口令,一定是使用系统的剪切板UIPasteboard。

    UIPasteboard常用属性string肯定无法胜任,因为自己的app可以对系统剪切板进行操作,别的app当然也可以对系统剪切板进行操作。肯定会出现不满足需求的异常情况。

    查看UIPasteboard类,会发现还有两个不常用的属性strings和items。于是,分别尝试对strings、items操作,验证效果。

    1、strings
    分享口令前,同时对剪切板UIPasteboard的string、strings进行赋值

    UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];
    pasteboard.string = @"口令";
    pasteboard.strings = @[@"口令",@""];
    

    打开app进入前台时,读取UIPasteboard的strings数组的count。如果是2,就是从本app复制了口令,去别处分享后,又回到了本app,此时不需要处理自己分享出去的口令;如果count是1,就是从别处复制的口令,打开app,此时需要解析口令,解析口令做出响应后,根据需要可以清空剪切板的string、strings。

    2、items
    分享口令前,分别对string、items赋值。

    UIPasteboard * pasteboard = [UIPasteboard generalPasteboard];
    pasteboard.string = content;
    //给剪切板加一条标记性的数据,检测剪切板的数据是否来自当前应用
    NSDictionary<NSString *, id> *item = @{@"标记":@"口令"};
    [systemBoard addItems:@[item]];
    

    打开app进入前台时,读取UIPasteboard的items,遍历item的中的NSDictionary的key是否含有@"标记"。如果有就是从本app复制了口令,回到本app时不需要处理。如果没有,就不是本app分享出去又回到本app,此时需要解析口令。

    相关文章

      网友评论

          本文标题:淘口令的处理

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