众所周知,iMessage 强制手机号注册,静默发送注册短信到苹果公司的注册号码,且提供查询手机号是否已注册 iMessage 的接口给 iOS 使用。黑灰产可以通过枚举手机号的方式,注册大量邮箱 ID 发送大量 iMessage 垃圾短信,即便向苹果举报垃圾短信,也可以通过更换新 ID 的方式继续发送,让人防不胜防。
用户无法选择只通过邮箱 ID 使用 iMessage,邮箱 ID 和手机号要么同时注册,要么同时关闭。通过苹果提供的注销网页( https://selfsolve.apple.com/deregister-imessage/ )注销手机号后,手机上已登录 iMessage 的邮箱 ID 也将同时注销(提示密码需要更新);重新输入密码之后又会自动把手机号码一同注册上。
楼主发现,联通或电信手机号在开启 iMessage 时,系统将自动发送激活短信给苹果,手机号将自动注册为 iMessage 账号,全程静默无任何提示;而移动号在开启 iMessage 时,手机会提示是否发送激活短信,如下图所示:

这时可以点击取消。点击取消之后,手机号不会发送注册短信,也就不会注册为 iMessage 账号,而如果原来已登录有邮箱 ID,则邮箱 ID 可以正常使用。这样就可以变相实现只通过邮箱 ID 使用 iMessage 了,从而杜绝了通过枚举手机号发送来的垃圾短信。但是只有移动会弹这个提示,可谓电信联通不如狗。最近楼主捣鼓出来一个方法,让联通和电信也弹这个提示,现将方法分享如下,各位若有需要可自行取用。
iOS11 或以下,可以通过修改 ipcc 并通过 iTunes 刷入的方式实现。步骤:
- 手机正常插卡,开启 iMessage,并将邮箱 ID 登录好
- 到苹果官网下载与手机型号、iOS 版本和运营商对应的 ipcc 文件,解压后得到一个 Payload 文件夹,里面又有一个以 bundle 结尾的文件夹
- 用 PlistEdit Pro 打开 bundle 文件夹里面的 carrier.plist,在 Root 下添加一个名为 RegistrationOptInRequired 的字段,类型为 Boolean 型,值为 YES,如下图所示

- 重新将 Payload 文件夹打包为 zip 文件,并将这个 zip 包后缀名改为 ipcc
- 打开 iTunes,连接手机,点击 iTunes 界面左上角的手机图标,并按住键盘 Shift(Windows)/Option(mac)键,同时鼠标点击“更新”按钮,在弹出的窗口选择第 4 步打包好的 ipcc 文件。点击确定之后会有一个进度条闪过
- 重启手机。重启完成之后,可到上面提到的苹果官网注销网页注销手机号,手机弹出密码框时输入密码(也可以直接关闭 iMessage 并重新打开,不过楼主没有测试)。稍后将弹出那个短信收费的提示,点击取消即可。
iOS12 或以上,需要越狱实现。步骤:
- 手机正常插卡,开启 iMessage,并将邮箱 ID 登录好
- 越狱,并使用 iFile/Filza 等文件管理 app,进入到 /var/mobile/Library/Carrier Bundles/Overlay 这个路径
- 可以看到这个路径下有很多形如 device+carrier+460xx+???+33.0.plist 的文件,选择与运营商对应的文件进行编辑,具体可看文件名的 460xx 部分,xx 为运营商的 MNC。比如电信是 46011 (参考 https://www.jianshu.com/p/1e017910b95e )。33.0 为运营商配置文件版本,一般选择最新的那个进行修改
- 跟 iOS11 的第 3 步一样,在这个文件的 Root 下添加一个名为 RegistrationOptInRequired 的字段,类型为 Boolean 型,值为 YES。只不过这次是在手机上操作
- 修改好后,将这个文件的写权限去掉
- 重启手机。重启完成之后,可到上面提到的苹果官网注销网页注销手机号,手机弹出密码框时输入密码(也可以直接关闭 iMessage 并重新打开,不过楼主没有测试)。稍后将弹出那个短信收费的提示,点击取消即可。