微信和苹果

 july 13, 2022     3 mins read

很早就发现海外的华人程序员,以及会翻墙用境外SNS的海内程序员,基本上都不怎么待见微信。我可以想象很多人反感国产app对言论的监控和屏蔽,但除此之外有些不明就里,就觉得不就是个社交软件吗。我觉得社交软件的体验感,很大程度上取决于你经常聊天的朋友用不用,而不是你自己用的开不开心了。

但同时我有个朋友,经常看到什么算命啊之类的小程序就会和我说“啊你也写一个,赚钱”我就挺反感的,就不知道为什么总觉得当一个“小程序程序员”很自降身价,赚这个钱多少有点“为五斗米折腰”的耻感。可能是因为我对于在一个原生app里面用html/js写代码,还必须要通过微信平台才能编译,就感觉非常没有技术含量——之前吭哧吭哧的给某个Wordpress网站写前端我也有一样的感觉。

当然,那会儿还有一点让我很困扰的就是——凭啥微信小程序这么没有技术含量的东西能赚钱,我好好写Java/ObjC搞移动开发写手机app不也能赚钱吗,为啥还让我去写小程序?那么我朋友说的是“小程序方便传播”,我也不服啊——安卓我不了解,苹果的分享功能不是很好用吗?长按app点share,想给谁就给谁,好多平台还能自动生成预览图,哪儿不香了?

直到有一天,我为了研究如何从Yelp/4sq通过actions extension跳转到我写的Dionysus(比较难,已然放弃这个想法了……)开始研究苹果的custom URL scheme,突然想起来国产app的分享方式:无一例外,全都靠剪贴板(复制粘贴本条信息,打开某某app,会自动显示相关内容)。而这个URL scheme在技术实现上无比简单,真的就是改一个参数的事情,为什么这些国产app就都不做呢?

于是上推特问了一圈,所有人的回答都是:微信不让。我一开始还没反应过来,觉得淘宝/小红书加个custom URL scheme,微信就算禁止了跳转到本尊app,也不妨碍我用其他app的时候,打开链接就可以跳转到app吧。

于是,我尝试在微信中打开了一个Yelp链接,发现打开后竟然是这样(而不是起一个webview打开Yelp内容)——

Wechat Opens Custom Scheme

我恍然大悟,合着在微信统治的中国互联网中,手机操作系统自带的分享功能是没有姓名的,会被扔到中国互联网的废物堆……

为什么会得出这个结论呢?因为完全没有使用custom URL scheme的app(淘宝,小红书云云),微信会直接用一个web view打开,然后用户可以在停留在微信上的同时,使用这些app的部分功能。但是一旦加上了custom url scheme,微信就直接不干了,显示个上面这个白屏——你自己用Safari打开这个页面吧。用户嫌费事可能就懒的打开了。(我相信这不是技术上做不到,推特就能直接在自己的webview上打开这些app的短链接)

那么,也就是说,如果我在中国开发一个iOS app,我该不该写这个custom URL scheme呢?写了,那么在微信上分享会很麻烦;不写,那么在所有微信以外的地方分享都很麻烦,iOS提供的很多很方便的“一键分享”功能算是废了。但在全民把微信当操作系统用的国内,为了微信用户而放弃苹果用户,明显是更划算的。

正准备开骂微信,突然觉得不太对劲。且不说产品想做一个“只许进不许出”的环境完全可以理解,关键是——苹果也没好到哪去啊?

作为一个苹果开发者,我要注册苹果开发者账号(每年还有100刀保护费,微信好歹免费的),用苹果开发的编程语言和编辑器,写出来的app也是要上传到苹果后台上(和微信的看着也挺像的),恭恭敬敬等他们审核。和微信有什么不同了?

好像最大的区别依然是还是技术层面。不管怎么说,ObjC和Swift都比HTML/JS这套技术栈要更缜密,更经得起复杂功能和逻辑的考验;而且苹果它自己是个操作系统,直接给操作系统写程序还是更符合我平时对“编程”的认知;而微信明明是个原生app,硬生生被当成了操作系统在用。

PS:这不能光说不练。写了这么大堆以后,我真的有点想去发个鸡肋的微信小程序了。。。之前用html写过几个小游戏就可以上头放放。。。

disclaimer: ginsterrific.com and the author give no guarantee and accept no responsibility or liability of the accuracy or the completeness of the materials and information contained. opinions are my own and do not necessarily reflect the views of my employer or any of my affiliations.