日期: 2021 年 9 月 23 日

闲置的 Android 机可以用来做什么?

闲置的 Android 机可以用来做什么?

maladroit · 4 天前 · 4920 次点击

*近把吃灰的树莓派拿出来做了 HomeBridge 和软路由;

想起来之前买了一个 Android 机用来偶尔做测试,一般情况下也都在吃灰,很少需要拿出来测试。想问问大家闲置的 Android 机可以拿来做些什么服务呢?

53 条回复    2021-09-23 09:06:33 +08:00

monkey110
    1

monkey110   4 天前

甜糖
ostrichb
    2

ostrichb   4 天前 via Android

刷机
kirafreedom
    3

kirafreedom   4 天前

我闲置的 ip7p 配了个雷蛇折叠手柄当串流游戏机
wu67
    4

wu67   4 天前

我的是…网络热点…游戏机

以及当作万一哪天主力机坏掉时的备用机

gzlock
    5

gzlock   4 天前   ❤️ 1

用来当开发机吧?
cctrv
    6

cctrv   4 天前 via iPhone

寫 android / flutter 可以做鏡像開發機。體驗超越模擬器 n 條街
coolmenu
    7

coolmenu   4 天前

挖矿
Moeyua
    8

Moeyua   4 天前 via iPhone   ❤️ 1

挂 clash 做局域网代理
vocaloidchina
    9

vocaloidchina   4 天前

装国产流氓软件 /测试一些可能有毒的 app
chengxiao
    10

chengxiao   4 天前   ❤️ 1

%title插图%num
写了个小 App 当监控副屏,桌面小摆件
HolaPz
    11

HolaPz   3 天前

国产垃圾桶
leafre
    12

leafre   3 天前

换不锈钢脸盆
nsynet57
    13

nsynet57   3 天前

闲鱼上卖掉
daimubai
    14

daimubai   3 天前

可以用来闲置
Wanerlove
    15

Wanerlove   3 天前

挂了个 mc 服务器家里玩
acton393
    16

acton393   3 天前

测试机
Windn0
    17

Windn0   3 天前 via iPhone

@Moeyua 只能代理 http 吧,不能加速 switch 感觉意义不大
muzihuaner
    18

muzihuaner   3 天前 via Android

ip 摄像头,服务器,电脑性能监看器,电脑副屏….
zerofancy
    19

zerofancy   3 天前 via Android

桌面时钟
Cheons
    20

Cheons   3 天前 via Android   ❤️ 2

卖给有需要的人,钱拿来买需求的专业设备。
twoyuan
    21

twoyuan   3 天前

改装成人造卫星发上天
janus77
    22

janus77   3 天前

50 包邮
zhengfan2016
    23

zhengfan2016   3 天前

可以没事拿出来盘,我收藏了不少小众系统手机,像 webos,windows phone,黑莓 bb10,firefoxos 等等,没事就拿出来充个电盘一盘
konchu
    24

konchu   3 天前

SSH 跳板 /堡垒机,内网穿透伺服器,WakeOnLan 伺服器
m4d3bug
    25

m4d3bug   3 天前 via Android

楼上各位大佬,有监控的 app 推荐吗,多个服务器,安卓机
jiayong2793
    26

jiayong2793   3 天前

开发板?
NAS ?
Usaki
    27

Usaki   3 天前 via Android

放公司,远程打卡
SJ2050cn
    28

SJ2050cn   3 天前

挂一些签到脚本
ngx4ss
    29

ngx4ss   3 天前

拿来当路由器 https://codewindy.github.io/2021/08/15/All-Platform-Proxy/
ziseyinzi
    30

ziseyinzi   3 天前

换剪子菜刀不锈钢脸盆
fox0001
    31

fox0001   3 天前 via Android

改装成无电池运行,让它 24 小时闲不下来
/t/787737
Lemeng
    32

Lemeng   3 天前

刷机 root,把不要的干掉,包括通话什么的,打打游戏不错
shm7
    33

shm7   3 天前   ❤️ 1

打卡。
RichardY
    34

RichardY   3 天前

@chengxiao 不怕烧屏?
LokiSun
    35

LokiSun   3 天前 via Android

@zhengfan2016 同好
aliveyang
    36

aliveyang   3 天前

放公司定时打卡
kerro1990
    37

kerro1990   3 天前

吹灰还是吃灰
aureole999
    38

aureole999   3 天前 via iPhone

再装 home assistant 接入 home bridge,然后手机装 home assistant 客户端,智能家居控制中心
hideokuze
    39

hideokuze   3 天前

50 包邮解君愁。
raysonx
    40

raysonx   3 天前

换菜刀、换脸盆、换打气筒。
ezrameow
    41

ezrameow   3 天前

chroot 个 Linux 当树莓派玩
ThinkMan
    42

ThinkMan   2 天前 via iPhone

https://20190429.xyz/androidchroot-linux
chengxiao
    43

chengxiao   2 天前

@RichardY 都闲置手机了…卖都卖不了几个钱 还怕烧什么屏啊
zxcslove
    44

zxcslove   2 天前

怎么能做到去除电池,持久供电呢?
OwO233
    45

OwO233   2 天前

可以用来当服务器玩。挂着脚本薅羊毛什么的。
wdongxv
    46

wdongxv   2 天前 via Android   ❤️ 1

如果你掌握内网穿透技术的话,可以当个高清摄像头用,即使是很差的手机也比网上卖的网络摄像头好 https://play.google.com/store/apps/details?id=com.pas.webcam
ychost
    47

ychost   1 天前

吃灰,想好玩还是买树莓派,资源多扩展性好
imtianx
    48

imtianx   1 天前

华为的机子,Android 10,已升级到鸿蒙 os2.0,有没有办法解锁,root 呀
loveuer
    49

loveuer   1 天前 via Android

@Wanerlove 啥 cpu 啊,这。。。性能 OK 吗?
jerryjhou
    50

jerryjhou   1 天前 via Android

@imtianx 980 的可以,但也不免费。970 之前的解锁码比较容易获得
Wanerlove
    51

Wanerlove   1 天前

@loveuer 骁龙 820 刚启动会卡 15 秒左右,等加载完稳定了非常流畅,mspt30 左右波动
hewiefsociety
    52

hewiefsociety   18 小时 14 分钟前

可以用来 送给我…
plusor
    53

plusor   1 小时 14 分钟前

定时炸弹

对于 widevine 认证 有了解的嘛

对于 widevine 认证 有了解的嘛

xunmiqun · 1 天前 via Android · 979 次点击

买了一个 X60Pro 我看 Netflix 官网上有支持 HDR 但是我下载了以后发现 不仅没有 HDR 了连 HD 都没有 认证为 L3 这是为啥

10 条回复    2021-09-22 20:23:21 +08:00

dingwen07
    1

dingwen07   1 天前 via iPhone

L1 是*高
L3 应该是确实只能 720p 吧
基本上谷歌服务是第后期安装的那就没戏。
harwck
    2

harwck   1 天前 via Android

官网上有支持不代表你就能看。
如果是国行机后装的谷歌服务那百分百不行。
Netflix 是在哪里下载的?非 Play Store 不行。
Play Store 里面 Play Protect Certification 没过不行。
既然你也知道是 L3 了那基本是凉凉了别想。
diguoemo
    3

diguoemo   1 天前 via Android

国内的手机很多都没有 l1,因为国情不需要,买三星吧,三星 s 系列全有 l1
iloim
    4

iloim   1 天前 via Android

首先看硬件支不支持,如果支持可以刷国际版更新一下证书直接就升到 L1 了
chanssl
    6

chanssl   1 天前

手快了,上面那个链接可以查看 NetFlix 支持的机型列表。
可以看到 vivo X60 Pro 是支持的。如果是显示为 L3 等级,那可能是系统没有添加。有国际版的话或许国际版可以,一些国产手机就是国内不添加,国际版添加,例如小米。
jerryjhou
    7

jerryjhou   1 天前 via Android

@harwck Widevine 不校验 Safetynet 和安装来源,系统里有驱动就可以(这部分相当于 GMS 扩展包,为了省钱不买授权很正常)

@chanssl 小米自从被锤后,2020 年开始全系 L1,包括无 GMS 的机型(不预装但全系过 GMS 认证)。实测红米 9 国行系统都可以读出 Widevine L1 认证,应该是所有出厂安卓 Q 都做了

@xunmiqun 弃疗吧估计是国行 ROM 没做,Vivo 连锁都解不了更别说通刷了

ostrichb
    8

ostrichb   1 天前 via Android

@dingwen07 Netflix 的 L3 只给到 480p
KevinChan
    9

KevinChan   1 天前

多半是国行为了省钱阉割掉了
laiyingdong
    10

laiyingdong   13 小时 55 分钟前

@jerryjhou 并不是全系,MTK 的部分并不一定。比如 K30U 的 Android 10 好像有。后面我买了红米 Note 10 Pro 5G,用天玑 1100 的那款。然后下载“设备信息” App 确认只有 L3,没有解锁 BL 锁,小米也有更新一版系统之后自带谷歌服务。SafetyNet 也能过,但是就是 L3 。而我的 K40 就是 L1

安卓换机 软件(含数据)迁移方案

现在大家都是怎么换机的?

发现各种换机助手说是可以迁移数据,但好像*后只把 apk 发过去了,数据都没迁过来,打开 app 都是新安装的效果。

想起以前都是用钛备份做的迁移,也不知道现在还能不能用。

同厂的机子比如两台小米可以通过备份文件恢复,如果是不同厂比如华为和小米又是怎么做的?

19 条回复    2021-09-23 10:12:50 +08:00

ccppgo
    1

ccppgo   23 小时 25 分钟前

钛备份, 几年前的神器, 好久不用咯
q197
    2

q197   23 小时 16 分钟前 via Android

没有 root 第三方 app 肯定是不行的,钛备份现在也还能用,只是不支持 split apk,所以部分 apk 备份了无法正确还原,此时新机可以去 play 商店重新下 app 后钛备份只还原数据
paopjian
    3

paopjian   23 小时 15 分钟前

不 root 没法迁数据,甚至安卓 11 都限制了应用权限,data 下都看不了.
kerb15
    4

kerb15   23 小时 8 分钟前

@q197
@paopjian
主要是换机软件也不会提示你 root 或者说明没有 root 并不能迁移数据,有点虚假宣传
Cytion
    5

Cytion   23 小时 8 分钟前

首先,购机要选择可以解锁 BL 和 root 的机型;
其次,使用 swiftbackup 可以更好的备份手机应用和数据。
kerb15
    6

kerb15   23 小时 4 分钟前

@Cytion 更多的使用场景是帮家里的长辈换机,虽然自己能操作,但如果是给没搞过机的朋友去做,估计成本就很高了
Xushet
    7

Xushet   22 小时 26 分钟前 via Android

钛备份,Android11 一样能用,
AoEiuV020
    8

AoEiuV020   21 小时 43 分钟前

钛备份好像不是很跟的上时代,很容易崩溃,不过没其他好用的了,
我在用的也是钛备份,是个不知道哪里找的什么 magisk 直装版,安装后再手动给个文件权限就能用了,
ronman
    9

ronman   21 小时 40 分钟前

@kerb15 给长辈换机尽量换同品牌,一个是操作逻辑类似,减少学习成本,一个就是换机方便
WebKit
    10

WebKit   21 小时 33 分钟前 via Android

@AoEiuV020 容易崩溃是你权限没给全
AoEiuV020
    11

AoEiuV020   21 小时 4 分钟前

@WebKit 权限是一方面,另一方面是官方版本确实没办法正常使用,我当时找了一大堆的钛备份,只有这个 magisk 直装版能用,看起来是民间魔改的版本,
这表示钛备份官方就没有针对现在流行的系统和 root 方案做适配,
kerb15
    12

kerb15   20 小时 36 分钟前

@ronman 有道理
yeeyeung
    13

yeeyeung   20 小时 33 分钟前

https://sspai.com/post/60521
cathedrel
    14

cathedrel   16 小时 27 分钟前

OAndBackupX
jerryjhou
    15

jerryjhou   15 小时 53 分钟前 via Android

系统级的换机(基本是同品牌)可以迁移数据,不可以跨版本,过大的文件自动跳过
mac20221225
    16

mac20221225   11 小时 20 分钟前 via Android

以前我也是用的钛备份
MakeItGreat
    17

MakeItGreat   1 小时 28 分钟前 via Android

https://www.v2ex.com/t/747733#reply20
有用点赞!!我现在回复一条需要 26 个币,快穷死了
wanwaneryide
    18

wanwaneryide   36 分钟前

小米的换机挺好的,APP 、数据、手机配置一起迁移的,新手机拿起来直接就能用,跟老手机没区别。唯一不好的地方就是,连带这老手机的 APP 的缓存数据啥的一并迁移了,导致新手机内存用的太快。
kerb15
    19

kerb15   几秒前

@MakeItGreat 现在还有币吗,为什么我看不到了,也给不了了

Android 单元测试如何规范

Android 单元测试如何规范

FATEQiang · 22 小时 20 分钟前 · 602 次点击
Android 的单元测试真的难搞啊! 1 、写过很多关于 Android 的单元测试的用例,特别是对老项目新增单元测试用例,发现大多时候,mock 、power pock 也难对代码做单元测试,很多单元测试的用例发现都是“废话”! 2 、Robolectric 虽然能解决 4 大组件的问题,但是真实测试发现写的用例也很鸡肋! 3 、使用 AndroidTest 又依赖环境,更多面向的应该是测试人员。 所以 Android 到底怎样写出有实际意义的测试用例,而不是类似完成 1000 行 6 个用例的 kpi ? 希望有经验的人,给出你们的看法,不再是面向领导编程!!!

测试 单元 Android 用例6 条回复 • 2021-09-22 22:56:34 +08:00
ahao99 1
ahao99 19 小时 24 分钟前
把业务相关的代码抽取出单独的 Java 代码,针对 JAVA 代码写 UT
Test 是否有意义,取决于你对业务的理解
FATEQiang 2
FATEQiang 19 小时 19 分钟前
@ahao99 你说得很对,我们很多时候也是 “抽取”,不过感觉真的是开发的负担
xylophone21 3
xylophone21 19 小时 3 分钟前
@ahao99 然而在 Android 端,一般来说业务并不是很多?
Geele 4
Geele 16 小时 2 分钟前
这个需要可测性高的代码,简单来说就是分层。比如 MVVM 中的 ViewModel 主要处理业务逻辑,且不依赖 Android 环境,就可以针对 ViewModel 的业务逻辑做 Java Unit Test (验证函数的输入输出)。反之没有良好的分层,业务逻辑与视图混在一块,我个人理解没办法做单元测试,只能做集成测试或者 UI 测试。
Helsing 5
Helsing 11 小时 27 分钟前 via iPhone
Clean 架构
vemier 6
vemier 11 小时 14 分钟前
集成测试优先

安卓系有非曲面屏的旗舰吗?

安卓系有非曲面屏的旗舰吗?(就是不要屏幕边缘卷起来一点的那种屏幕)

Keyes · 1 天前 via iPhone · 2725 次点击
安卓系 曲面 屏幕 边缘43 条回复 • 2021-09-23 06:41:18 +08:00
westoy 1
westoy 1 天前 ❤️ 5
这是钦定索尼了…….
JensenQian 2
JensenQian 1 天前 via Android ❤️ 2
888 机子你考虑下再买
870 里面的机子你可以考虑下 3000 以内考虑下,一堆
nuxio 3
nuxio 1 天前 ❤️ 1
三星啊 s21
yinxiangbiji 4
yinxiangbiji 1 天前
“卷起来一点”是什么意思
lasfresas 5
lasfresas 1 天前 via Android ❤️ 1
sony 的 xperia 系列
emotion0801 6
emotion0801 1 天前 via Android ❤️ 1
你要完全直屏那种吗?估计没了。现在都是微曲面的。
FeifeiJin 7
FeifeiJin 1 天前 via Android ❤️ 2
Sony Xperia 1 iii
Keyes 8
Keyes 1 天前 via iPhone
@emotion0801 嗯对就 iPhone 那种平的,我个人习惯原因单手操作曲屏的会有严重误触现象,基本没法用
redeemer1001 9
redeemer1001 1 天前
啊我也很讨厌曲面屏…提名一个 k40 pro,不过可能不够旗舰
jerryjhou 10
jerryjhou 1 天前 via Android ❤️ 2
一加 9/9R,红米 K40Pro/Pro+,三星 S21,小米 11T Pro 、CC11 系列( 10-11 月可能会发),魅族和魅蓝新品(魅族 18 的衍生型号,已入网未发布)
Others 中还有原厂 ROM 和第三方适配都很渣的 ZTE 旗下三大品牌,联想 /Moto 也行

从 V 站偏好来说一加 9 *佳,或者等 9RT 。进可以 CorlorOS 随便解锁 Root,退可以刷氧 OS 或类原生,第三方 ROM 内核 Rec 适配优异
jerryjhou 11
jerryjhou 1 天前 via Android
P50 、IQOO 7/8 标准版也是直屏
Tary 12
Tary 1 天前
楼主 那叫 2.5D 屏幕 或者 瀑布屏
cst4you 13
cst4you 1 天前
Pixel 4XL, Pixel 6
emotion0801 14
emotion0801 1 天前 via Android
@Keyes iPhone 那种啊。那就很多了。魅族啊。oppo 。vivo 啊。都有很多的。
xmlf 15
xmlf 1 天前 via Android
三星 s21
TimPeake 16
TimPeake 1 天前
不上曲面就没高档感觉了 虽然没啥用 哈哈 现在手机都是这样
WangheiHO 17
WangheiHO 1 天前 via Android
Sony xperia 1 M3 和 5 M3
willyeon99 18
willyeon99 1 天前
iphone12 之前不都是你说的那种吗,要纯直板屏可能还真不好找
shakoon 19
shakoon 1 天前
@Keyes #8 三棒有官方工具可以修改曲边的响应范围,防误触毫无压力。另外,曲边的手感真的比直边好太多。
2i2Re2PLMaDnghL 20
2i2Re2PLMaDnghL 1 天前
@shakoon 我是 xz1 单手操作都手掌大鱼误触侧边,改曲边大概是没用的(
@TimPeake 曲面倒是挺有廉价感的。还是行云那样直接显示在眼镜里比较好
Dragonphy 21
Dragonphy 23 小时 52 分钟前
888 你会后悔的
Serino 22
Serino 23 小时 4 分钟前
我也讨厌曲面屏,贴膜难贴,自己买个大弧边的钢化膜手感多好
从来没觉得什么弧边 2.5D 瀑布屏好用

什么,你不贴膜?那当我没说
wanwaneryide 23
wanwaneryide 22 小时 56 分钟前
边缘稍微曲面的是不会影响正面的观感的(跟之前三星的那种曲面差多了),个人体验来说,跟以前的直板的没区别,唯一影响的就是贴膜,不过我手机买了就裸奔了,无影响
Twinkle 24
Twinkle 22 小时 52 分钟前
不要旗舰的话可考虑 realme 全系列
hxk1990 25
hxk1990 21 小时 54 分钟前
非常不建议索尼手机,大带鱼屏,看个电影两边大黑框!拉伸看更不舒服
kimwang 26
kimwang 21 小时 32 分钟前 via Android
用曲面旗舰的都是有钱人,贴膜难贴不成立,必须不贴膜不戴套用。

如果不能接受可以看看华硕 Zenfone 。
Keyes 27
Keyes 21 小时 5 分钟前 via iPhone
@Dragonphy 会很热吗?我看评测都说不行,870 稳一点?
Cagliostro 28
Cagliostro 19 小时 51 分钟前 via iPhone
@Keyes 870 对比 888 是稳些,如果你不打游戏非常建议 870,因为 888 日用都会发热。
noahhhh 29
noahhhh 19 小时 48 分钟前 via Android
@Keyes ?夏天是不行,现在天气越来越凉就行了。
Ley 30
Ley 19 小时 18 分钟前 via Android
@hxk1990
因为这些年的电影大多是 21:9 的比例,所以索尼 Xperia 的 21 :9 CineWide 4K HDR OLED 屏幕看大多数电影完美无黑边,实际显示面积远大于其他手机哦。
刷论坛和 SNS 时纵向显示内容也多了一半,信息量大。更重要的是,非曲面无打孔无刘海,不会画面缺少一块。
不过正如你说的,21:9 屏幕看 16:9 的电视剧和动画确实黑边比较大,比较浪费,不如其他家 20:9 或 18:9 的屏幕黑边会稍小。
Yother233 31
Yother233 19 小时 5 分钟前
Xperia 系列你值得拥有。
crayygy 32
crayygy 18 小时 54 分钟前
一加 9R 是直屏,870 比 888 更有优势,拍照略逊一筹。
lin07hui 33
lin07hui 18 小时 50 分钟前
没有,安卓从来就没有旗舰机,未来也不会有
hxk1990 34
hxk1990 18 小时 10 分钟前
@Ley 小众手机,系统优化,使用体验都是糟糕的,尤其是索尼
wzxlovesy 35
wzxlovesy 18 小时 8 分钟前 via Android
@hxk1990 索尼的本地化确实很垃圾,系统也经常有些令人抓狂的小 BUG,但我每次还是忍不住剁手……
kiotech 36
kiotech 17 小时 50 分钟前
@hxk1990 #34 小众手机+1,但原生系统 != 优化体验差。也可能是我轻度使用,且少装国产 APP 。索尼黑科技还是挺好玩的
zerohzd 37
zerohzd 17 小时 42 分钟前
不建议 888+1,推荐一手 S20 FE
vipiscaptain 38
vipiscaptain 16 小时 42 分钟前
今天新发布的魅族 18X,香
Ley 39
Ley 16 小时 32 分钟前 ❤️ 1
@hxk1990
体验如何因人而异,V2 不少原生党应该不会觉得有问题。系统主要是缺少本地化,优化倒还好,很少恶性 bug,整体也比较稳定。
不过上面的回复仅针对屏幕比例,无关系统软件体验。也就是,一,21:9 其实完美贴合电影但不适合电视剧;二,其他安卓手机的比例也大多接近 21:9,看电视剧时同样存在大面积黑边,很难说索尼的黑边明显比其他品牌的大。
liyiecho 40
liyiecho 16 小时 25 分钟前
@crayygy #32 一加 9R color 12 系统更新都跟一加 8 系同地位了,安排到明年了?
@vipiscaptain #38 魅族 18X 还不如同样是今天发布的 realme GT Neo2 呢?
augneb 41
augneb 16 小时 13 分钟前
不建议三星 s21,烫手~
zacklin99 42
zacklin99 13 小时 30 分钟前
@Keyes 我现在用 iPhone,不过之前用 mate 系列完全没有误触的感觉。。。虽然我喜欢看直屏,但是实际曲面手感是真的好。。。iPhone 12 Pro Max 的手感真的是一言难尽,搞得我从来不带手机壳的,现在搞了个液态硅胶壳。
philipjf 43
philipjf 3 小时 30 分钟前
安卓的曲面屏就是用来刷屏占比数据的,毕竟拿掉那个大下巴可是要加钱的

[iOS]审核被拒(陌生社交应用)

2020年1月12日 上午5:38
发件人 Apple
• 1. 1 Safety: Objectionable Content
• 1. 2 Safety: User Generated Content
• 4. 8 Design: Sign in with Apple
Guideline 1.1 – Safety – Objectionable Content
Your app includes content that many users would find objectionable and offensive. Specifically, your app encourages or facilitates compensated dating or companionship.

Guideline 5.0 – Legal
Additionally, your app contains content – or facilitates, enables, and encourages an activity – that is not legal in all of the locations where the app is available.

Next Steps

We encourage you to review your app concept and evaluate whether you can incorporate different content and features to bring it into compliance with the App Store Review Guidelines.

Guideline 1.2 – Safety – User Generated Content
Your app enables the display of user-generated content but does not have the proper precautions in place.

Next Steps

To resolve this issue, please revise your app to implement all of the following precautions:

– Require that users agree to terms (EULA) and these terms must make it clear that there is no tolerance for objectionable content or abusive users
– A method for filtering objectionable content
– A mechanism for users to flag objectionable content
– A mechanism for users to block abusive users
– The developer must act on objectionable content reports within 24 hours by removing the content and ejecting the user who provided the offending content

Guideline 4.8 – Design – Sign in with Apple
We noticed that your app uses a third-party login service but does not offer Sign in with Apple.

Next Steps

To resolve this issue, please revise your app to offer Sign in with Apple as an equivalent login option.

Resources

To learn more, see the Sign in with Apple Overview.

Please see attached screenshots for details.

这些附件可能会显示可能令人反感的内容,如裸露、色情和亵渎内容。
• Screenshot-0111-133154.png
• Screenshot-0111-123603.png
• Screenshot-0111-123706.png

%title插图%num

%title插图%num

%title插图%num

 

翻译

准则1.1-安全-令人反感的内容
您的应用程序包含许多用户会感到反感和令人反感的内容。具体来说,您的应用鼓励或促进有偿约会或陪伴。

准则5.0-法律
此外,您的应用包含的内容-或促进,启用和鼓励了一项活动-在该应用可用的所有位置均不合法。
————
【应用程序必须遵守上线地区的法律法规,禁止含有赌博、色情、有偿陪伴等违反法律的内容,尤其为用户提供付费社交服务的APP,例如在线直播类APP,必须严格遵守相关规定。】

准则1.2-安全-用户生成的内容
您的应用允许显示用户生成的内容,但没有适当的预防措施。

要解决此问题,请修改您的应用以实施以下【所有】预防措施:
1.要求用户同意条款(EULA),并且这些条款必须明确规定,对令人反感的内容或滥用用户不存在任何容忍
2.一种过滤有害内容的方法
3.用户标记令人反感的内容的机制
4.用户阻止滥用用户的机制
5.开发人员必须在24小时内通过删除内容并驱逐提供违规内容的用户来处理令人反感的内容报告

准则4.8-设计-使用Apple登录
我们注意到您的应用程序使用了第三方登录服务,但不提供使用Apple登录。
————
以前是判断是否安装 第三方登陆的客户端,没有就隐藏即可。现在是苹果公司新政策如果有第三方登陆必须含有苹果登陆的选项。并且苹果登陆得是显著的显示再其他第三方登陆之上。详情【http://shannxi.tiaomu.com/b/cygc/564954.html】苹果官方文章【https://developer.apple.com/news/?id=06032019j

[iOS]App审核(第三方登录)

App 审核拒*原因
2021年1月8日 上午4:06
发件人 Apple
4. Design: Preamble
4. 2 Design: Minimum Functionality
4. 8 Design: Sign in with Apple

Guideline 4.0 – Design

Your app offers Sign in with Apple as a login option but does not use the appropriate Sign in with Apple button design, placement, and/or user interface elements. Specifically:
Specifically, the Sign in with Apple button should not have text under it.

Next Steps

Please revise the Sign in with Apple buttons in your app so that they are compliant with the App Store Review Guidelines and the Sign in With Apple Human Interface Guidelines.

Resources

For information on implementing Sign in with Apple in your app:
– Review Displaying Sign in with Apple Buttons if your sign in process happens in a browser.
– Review the Sign in with Apple Human Interface Guidelines for an overview of design and formatting recommendations for Sign in with Apple.

Guideline 4.2.3 – Design – Minimum Functionality

We were required to install the WeChat app before we could log in via WeChat. Users should be able to log in with WeChat and access their accounts without having to install any additional apps.

Next Steps

If you would like to offer authentication through WeChat, please use a mechanism that allows users to log in with WeChat from within your app without first having to install an additional app.
We recommend implementing the Safari View Controller API to display web content within your app. The Safari View Controller allows the display of a URL and inspection of the certificate from an embedded browser in an app so that customers can verify the webpage URL and SSL certificate to confirm they are entering their sign in credentials into a legitimate page.

Resources

For additional information on the Safari View Controller API, please review the What’s New in Safari webpage.
Please see attached screenshot for details.

Bug Fix Submissions

If this is a bug fix submission and you’d like to have it approved at this time, reply to this message in Resolution Center to let us know. You do not need to resubmit your app for us to proceed.
Alternatively, if you’d like to resolve these issues now, please feel free to resubmit. Let us know if you have any questions about the issues we found in our review.
You may appeal your app rejection if you believe this decision was made incorrectly. We also invite you to provide feedback on our review guidelines.

Guideline 4.8 – Design – Sign in with Apple

We noticed that your app uses a third-party login service but does not offer Sign in with Apple.

Next Steps

To resolve this issue, please revise your app to offer Sign in with Apple as an equivalent login option.

Resources

To learn more, see the Sign in with Apple Overview.
Please see attached screenshots for details.

Screenshot-0107-120145.png

Google翻译
2021年1月8日上午4:06
发件人苹果
4.设计:序言
4. 2设计:*小功能
4. 8设计:使用Apple登录

准则4.0-设计

您的应用程序提供了“使用Apple登录”作为登录选项,但未使用适当的“使用Apple登录”按钮的设计,位置和/或用户界面元素。特别:
具体来说,“使用Apple登录”按钮下不应包含文本。

下一步

请修改应用程序中的“使用Apple登录”按钮,使其符合《 App Store审查指南》和《使用Apple人机界面登录指南》。

资源资源

有关在您的应用程序中实现使用Apple登录的信息:
-如果您的登录过程在浏览器中进行,请查看“使用Apple Buttons登录”。
-查看“使用Apple人机界面登录指南”,以获取有关“使用Apple登录”的设计和格式建议的概述。

准则4.2.3-设计-*低功能

我们需要先安装微信应用程序,然后才能通过微信登录。用户应该能够使用微信登录并访问其帐户,而无需安装任何其他应用程序。

下一步

如果您想通过微信提供身份验证,请使用一种机制,该机制允许用户从您的应用程序内使用微信登录,而无需先安装其他应用程序。
我们建议实现Safari View Controller API,以在您的应用程序中显示Web内容。 Safari View Controller允许显示URL并通过应用程序中的嵌入式浏览器检查证书,以便客户可以验证网页URL和SSL证书以确认他们将登录凭据输入到合法页面中。

资源资源

有关Safari View Controller API的其他信息,请查看Safari网页中的新增功能。
有关详细信息,请参见附件的屏幕截图。

错误修复提交

如果这是一个错误修复提交,并且您想此时批准它,请在解决中心中回复此消息以告知我们。您无需重新提交您的应用程序即可继续。
另外,如果您想立即解决这些问题,请随时重新提交。如果您对我们在审查中发现的问题有任何疑问,请告诉我们。
如果您认为此决定是不正确的,则可以对您的应用拒*提出申诉。我们还邀请您提供有关我们的审核指南的反馈。

准则4.8-设计-使用Apple登录

我们注意到您的应用程序使用了第三方登录服务,但不提供使用Apple登录。

下一步

要解决此问题,请修改您的应用程序以提供“使用Apple登录”作为等效的登录选项。

资源资源

要了解更多信息,请参阅“使用Apple登录”。
有关详细信息,请参见所附的屏幕截图。

App 审核屏幕截图

%title插图%num

处理
1、上架的应用中,若要使用第三方登录服务,必须同时提供使用Apple登录;

2、提供Apple登录服务时,需要符合Apple公司的设计要求。具体来说,“使用Apple登录”按钮下不应包含文本。

3、使用第三方登录时,需要根据用户是否安装该软件的客户端进行逻辑处理。具体来说,要让审核人员在任何情况下看到的第三方登录都是正常可用的,可以选择在用户未安装第三方软件时隐藏掉第三方登录按钮,也可以在用户未安装第三方应用时让用户从您的应用程序内使用微信登录(Safari View Controller API)。

IOS苹果账号三方登录服务器端验证

背景:公司app项目有一个苹果账号三方登录功能,其中需要后台提供苹果验证。按照网上搜到的方法,有时候会匹配不成功,将ios请求的内容存到redis里面,redis设置4分钟过期。
下面是代码,直接复制过去应该要修改的,先看懂啥意思自己在修改吧。里面的参数jwt是app端传来的。里面的从redis存取的方法应该不能直接用,写成你自己的方法,也可以直接去掉,去掉有可能会验证不通过。我个人觉得应该是后台请求的信息和app反过来的信息时间上有可能不同步,就会验证不通过,所以通过redis保存一下4分钟。据说是这个token5分钟过期。

package com.jeecg.wechat.controlle;
import java.security.PublicKey;

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.net.util.Base64;
import org.jeecgframework.core.common.service.impl.RedisService;
import org.jeecgframework.core.util.HttpRequest;
import org.jeecgframework.core.util.oConvertUtils;
import org.jeecgframework.jwt.util.ResponseMessage;
import org.jeecgframework.jwt.util.Result;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.auth0.jwk.InvalidPublicKeyException;
import com.auth0.jwk.Jwk;
import com.jeecg.share.util.RedisConfig;

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.ExpiredJwtException;
import io.jsonwebtoken.Jws;
import io.jsonwebtoken.JwtParser;
import io.jsonwebtoken.Jwts;

/**ios appleid三方登录后台验证方法
* 参考:https://blog.csdn.net/wth905541529/article/details/103312174
* @author Administrator
*
*/
@Controller
@RequestMapping(“/IosController”)
public class IosController {
private static final Logger log = LoggerFactory.getLogger(IosController.class);
@Autowired
private RedisService redisService;
/**
* *步:手机端操作获取code
* 第二步:通过code获取access_token(在自己服务器端做)
* @return
*/
@RequestMapping(value = “/appleAuth”,method = RequestMethod.GET)
@ResponseBody
public Object appleAuth(String jwt) {
//从redis里面取jwt
if (jwt.split(“\\.”).length > 1) {
String claim = new String(Base64.decodeBase64(jwt.split(“\\.”)[1]));
String aud = JSONObject.parseObject(claim).get(“aud”).toString();
String sub = JSONObject.parseObject(claim).get(“sub”).toString(); //用户openid
if (oConvertUtils.isNotEmpty(redisService.get(sub))) {
jwt = redisService.get(sub) + “”;
}
}

JSONObject jsonObject = null;
jsonObject = HttpRequest.sendGet(“https://appleid.apple.com/auth/keys”, “”);
if(oConvertUtils.isEmpty(jsonObject)){
return Result.error(“网络故障,请重试!”);// 未获取到公钥
}
String keys = jsonObject.getString(“keys”);
JSONArray arr = JSONObject.parseArray(keys);
JSONObject jsonObject1 = JSONObject.parseObject(arr.getString(0));
Jwk jwa = Jwk.fromValues(jsonObject1);
try {
// 生成苹果公钥
PublicKey publicKey = jwa.getPublicKey();
// String hearder = new String(Base64.decodeBase64(jwt.split(“\\.”)[0]));
if (jwt.split(“\\.”).length > 1) {
String claim = new String(Base64.decodeBase64(jwt.split(“\\.”)[1]));
String aud = JSONObject.parseObject(claim).get(“aud”).toString();
String sub = JSONObject.parseObject(claim).get(“sub”).toString();
return verify(publicKey, jwt, aud, sub);
}
//return “FAIL”;
return Result.error(“FAIL”);
} catch (InvalidPublicKeyException e) {
// throw new Exception(“转换苹果公钥失败”, e);
return Result.error(“转换苹果公钥失败,请重试!”);
}
}

/**
* 验证苹果公钥
* @param key
* @param jwt
* @param audience
* @param subject
* @return
*/
public Object verify(PublicKey key, String jwt, String audience, String subject) {
JwtParser jwtParser = Jwts.parser().setSigningKey(key);
jwtParser.requireIssuer(“https://appleid.apple.com”);
jwtParser.requireAudience(audience);
jwtParser.requireSubject(subject);
try {
Jws<Claims> claim = jwtParser.parseClaimsJws(jwt);
if (claim != null && claim.getBody().containsKey(“auth_time”)) {
//System.out.println(“【成功:】 【key】:”+key+” 【jwt】:”+jwt+” 【audience】:”+audience+” 【subject】:”+subject+” 【claim】:”+claim);
if (redisService.get(subject) == null) {
redisService.set(subject, jwt);
}

return Result.success();
}
return Result.error(“FAIL”);
} catch (ExpiredJwtException e) {
//throw new SysException(“苹果token过期”, e);
redisService.delete(subject);
e.printStackTrace();
return Result.error(“苹果token过期,请重试!”);
} catch (Exception e) {

//throw new SysException(“苹果token非法”, e);
e.printStackTrace();
//System.out.println(“【失败:】 【key】:”+key+” 【jwt】:”+jwt+” 【audience】:”+audience+” 【subject】:”+subject+” 【claim】:”);
return Result.error(“苹果token非法,请重试!”);
}
}
}

苹果授权登录Sign In With Apple亲测通过版[100%成功]

废话不多说,直接复制把自己的包名写上就可以用了
有个别的小坑,HttpUtil自己写,没附上
Base64一定要用org.apache.commons.codec.binary.Base64其它的会报错
小提示:苹果的公钥可能是固定的,可以自己实现一个缓存提高授权速度
pom.xml

<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.1</version>
</dependency>
1
2
3
4
5
package com.;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.haojiao.init.utils.HttpUtil;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jws;
import io.jsonwebtoken.JwtParser;
import io.jsonwebtoken.Jwts;
import org.apache.commons.codec.binary.Base64;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.Base64Utils;

import java.math.BigInteger;
import java.security.KeyFactory;
import java.security.PublicKey;
import java.security.spec.RSAPublicKeySpec;
import java.util.HashMap;

public class SignInWithApple {

private static Logger logger = LoggerFactory.getLogger(SignInWithApple.class);

@Test
public void main(){
verify(“1.2.3”);
}

/**
* 解密个人信息
*
* @param identityToken APP获取的identityToken
*
* @return 解密参数:失败返回null sub就是用户id,用户昵称需要前端传过来
*/
public static JSONObject verify(String identityToken) {
try {
String[] identityTokens = identityToken.split(“\\.”);
String token0 = new String(Base64Utils.decodeFromString(identityTokens[0]), “UTF-8”);
String token1 = new String(Base64Utils.decodeFromString(identityTokens[1]), “UTF-8”);
JSONObject data0 = JSONObject.parseObject(token0);
JSONObject data1 = JSONObject.parseObject(token1);
String aud = (String) data1.get(“aud”);
String sub = (String) data1.get(“sub”);
if (verify(data0,identityToken, aud, sub)) {
return data1;
}
} catch (Exception e) {
logger.info(“verify(*) error “,e);
}
return null;
}

/**
* 验证
*
* @param identityToken APP获取的identityToken
* @param aud 您在您的Apple Developer帐户中的client_id
* @param sub 用户的唯一标识符对应APP获取到的:user
* @return true/false
*/
private static boolean verify(JSONObject token0,String identityToken, String aud, String sub) {
try {
PublicKey publicKey = getPublicKey(token0);
if (publicKey==null){
return false;
}
JwtParser jwtParser = Jwts.parser().setSigningKey(publicKey);
jwtParser.requireIssuer(“https://appleid.apple.com”);
jwtParser.requireAudience(aud);
jwtParser.requireSubject(sub);
Jws<Claims> claim = jwtParser.parseClaimsJws(identityToken);
if (claim != null && claim.getBody().containsKey(“auth_time”)) {
return true;
}
} catch (Exception e) {
logger.info(“verify(*,*,*) error “, e);
}
return false;
}

private static PublicKey getPublicKey(JSONObject token0) {
try {
String str = HttpUtil.get(“https://appleid.apple.com/auth/keys”, new HashMap<>());
JSONObject data = JSONObject.parseObject(str);
JSONArray jsonArray = data.getJSONArray(“keys”);

for (int i = 0; i <jsonArray.size() ; i++) {
JSONObject o = jsonArray.getJSONObject(i);
String kid = o.getString(“kid”);
if (kid.equals(token0.getString(“kid”))){
String n = o.getString(“n”);
String e = o.getString(“e”);
BigInteger modulus = new BigInteger(1, Base64.decodeBase64(n));
BigInteger publicExponent = new BigInteger(1, Base64.decodeBase64(e));
RSAPublicKeySpec spec = new RSAPublicKeySpec(modulus, publicExponent);
KeyFactory kf = KeyFactory.getInstance(“RSA”);
return kf.generatePublic(spec);
}
}

} catch (Exception e) {
logger.info(“getPublicKey error “, e);
}
return null;
}

}

 

苹果的MDM简介

MDM(Mobile Device Management)移动设备管理,一般会用于企业管理其移动设备,鉴于iOS是比较封闭的系统很多的功能都难以实现,所以利用苹果的MDM可以达到远程控制设备,像远程定位,远程锁屏,远程恢复出厂设置,禁用蓝牙,禁用摄像机等功能

下面的这幅图很好的说明了MDM的运行过程,首先注册你的设备在MDM服务器上,MDM服务器通过APNS发送命令给设备,设备如果处于空闲的状态会给苹果的发消息说处于空闲状态,空闲则执行相应的命令,执行完毕就会告诉MDM服务器执行结果。

%title插图%num

下面列出了利用MDM的命令能实现的功能

锁屏命令
获取设备的app的信息
清除设备的密码
安装一个描述文件
删除一个描述文件
获取描述文件的列表
获取设备的信息
删除一个app的命令
安装一个app的命令
获得安全相关的信息
恢复出厂设置
获得预置证书列表
获得证书的列表
获得限制
获得所管理的app的信息
安装一个文件或书籍
获得所安装的文件的列表
移除安装的文件
获得可更新的系统的信息
远程定位
设置设备的名称
远程设置设备的墙纸
MDM相关内容
友情链接: SITEMAP | 旋风加速器官网 | 旋风软件中心 | textarea | 黑洞加速器 | jiaohess | 老王加速器 | 烧饼哥加速器 | 小蓝鸟 | tiktok加速器 | 旋风加速度器 | 旋风加速 | quickq加速器 | 飞驰加速器 | 飞鸟加速器 | 狗急加速器 | hammer加速器 | trafficace | 原子加速器 | 葫芦加速器 | 麦旋风 | 油管加速器 | anycastly | INS加速器 | INS加速器免费版 | 免费vqn加速外网 | 旋风加速器 | 快橙加速器 | 啊哈加速器 | 迷雾通 | 优途加速器 | 海外播 | 坚果加速器 | 海外vqn加速 | 蘑菇加速器 | 毛豆加速器 | 接码平台 | 接码S | 西柚加速器 | 快柠檬加速器 | 黑洞加速 | falemon | 快橙加速器 | anycast加速器 | ibaidu | moneytreeblog | 坚果加速器 | 派币加速器 | 飞鸟加速器 | 毛豆APP | PIKPAK | 安卓vqn免费 | 一元机场加速器 | 一元机场 | 老王加速器 | 黑洞加速器 | 白石山 | 小牛加速器 | 黑洞加速 | 迷雾通官网 | 迷雾通 | 迷雾通加速器 | 十大免费加速神器 | 猎豹加速器 | 蚂蚁加速器 | 坚果加速器 | 黑洞加速 | 银河加速器 | 猎豹加速器 | 海鸥加速器 | 芒果加速器 | 小牛加速器 | 极光加速器 | 黑洞加速 | movabletype中文网 | 猎豹加速器官网 | 烧饼哥加速器官网 | 旋风加速器度器 | 哔咔漫画 | PicACG | 雷霆加速