自动识别剪贴板内容

引言:

之前用淘宝给微信好友分享链接的时候,发现在微信中复制了宝贝的链接,然后再从后台切换到淘宝客户端,淘宝就会弹出一个页面,询问是否要跳转到相关页面,今天试着实现了一下,分享出来~


# 一. 代码实现

- (void)getPasteboardString {
    
    // 获取剪切板信息
    NSString *str = [UIPasteboard generalPasteboard].string;

    // 做相应处理
    if ([str hasPrefix:@"http://"] || [str hasPrefix:@"https://"]) {
        NSLog(@"自己想要的内容");
    } else {
        NSLog(@"不是自己想要的内容");
    }
}

获取设备的剪贴板很简单,第一行代码就搞定了,if 语句中判断了一下剪贴板中的内容是不是链接,注意http和https都要写上,这点很容易被忽略(在浏览器地址栏中复制以www.开头的文本会自动在剪贴板中转为http或https开头的链接)。


# 二. 调用时机

对比applicationWillEnterForegroundapplicationDidBecomeActive 这两个方法,前者是指 App从后台进入前台,后者是指 App处于活跃状态,所以前者相对于后者,缺少的部分是,当 App 刚刚启动,而不是从后台取出的时候,它无法识别剪贴板。

因为你不能要求每次都让用户先把 App 打开,再往剪贴板里面填东西,再跳转回来,所以个人建议把上面的代码放在 applicationDidBecomeActive 方法中,而不是 applicationWillEnterForeground 。