Tròn 1 năm tự học lập trình, nay mình chia sẻ câu chuyện bị Apple từ chối duyệt App gần đây để mọi người thấy Apple quan tâm tính riêng tư của người dùng nhiều như thế nào.
Đây là chia sẻ một năm trước về con đường tự học làm App của mình: https://tinhte.vn/thread/hoc-lap-trinh-co-kho-khong-review-qua-trinh-tu-hoc-lam-app-ios-va-dang-len-app-store.3363130/
Đây là phác thảo ý tưởng đầu tiên về App mình dùng Sketch để vẽ
Đây là chia sẻ một năm trước về con đường tự học làm App của mình: https://tinhte.vn/thread/hoc-lap-trinh-co-kho-khong-review-qua-trinh-tu-hoc-lam-app-ios-va-dang-len-app-store.3363130/
Lý do mình học làm App
Mình là giáo viên Tiếng Anh và mình muốn tạo ra một chiếc App hỗ trợ học viên luyện Speaking và tăng vốn từ vựng. Do lúc dịch có nhiều thời gian nên mình mua khoá iOS developer trên Udemy (giá sales 250k), học và làm ra App hiện tại.
Đây là phác thảo ý tưởng đầu tiên về App mình dùng Sketch để vẽ

Còn đây là App hiện tại, sau rất nhiều lần chỉnh sửa và nâng cấp
Những lần mình bị Apple từ chối duyệt
Sigin in with Apple

Lần đầu mình bị reject (từ chối) là khi trang bị tính năng đăng nhập bằng tài khoản Google, Apple nhắn là mình cần bổ sung Apple Login.
Login qua tài khoản Google/ Apple
- Người dùng đăng nhập giống như khi vào Gmail/ Apple Id,
- App sẽ gửi Token từ Google/ Apple về server và xác thực đăng nhập.
Khác biệt giữa Google và Apple Login:
- Google cho phép mình lấy thông tin của người dùng (như email, tên, ảnh Profile) mà không có giới hạn gì cả, những thông tin này được dùng để hiển thị thông tin trên App và lưu vào cơ sở dữ liệu của server.
- Apple Login cho phép người dùng tuỳ chọn chia sẻ hoặc giấu thông tin về tên và email, một email thay thế sẽ được tạo ra (vd: [email protected]), còn email chính sẽ được ẩn đi. Một điểm khác biệt lớn nữa là Apple chỉ gửi thông tin cho App duy nhất lần đầu tiên đăng nhập, những lần sau người dùng đăng nhập bằng Apple thì App sẽ không nhận được thông tin gì nữa, do đó mình phải thiết lập cơ chế lưu thông tin lần đăng nhập đầu vào máy, những lần sau user Login vào thì gọi ra thôi.
Như vậy việc Apple yêu cầu mình bổ sung phần này giúp User có thêm tuỳ chọn bảo mật thông tin cá nhân tốt hơn.
Cho người dùng biết mục đích thu âm

Quảng cáo
App mình có tính năng thu âm để giúp người học nghe lại phần luyện tập, so sánh với phần nói mẫu, Apple nhắn là phải ghi rõ mục đích thu âm trong hộp thoại hỏi xin phép truy cập Microphone, và mình cũng xác nhận rằng file thu âm sẽ được xoá khi người dùng hoàn thành một bài, không lưu lại hoặc gửi về server.
Qua đây các bạn có thể thấy Apple muốn người dùng có quyền được kiểm soát dữ liệu chia sẻ với App.
Bổ sung nút xoá tài khoản

Mới đây mình có đợt update lớn cho App, thay đổi giao diện và thêm tính năng, sau khi kiểm tra cẩn thận thì hí hửng submit lên duyệt, xong … bị gửi thông báo từ chối.

Quảng cáo
Đợt này Apple có một yêu cầu mới cho phần dữ liệu người dùng (trước đây không có):
- App có tính năng Login, tạo tài khoản cần cung cấp cho người dùng nút hoặc link để xoá tài khoản
- Việc xoá được định nghĩa rõ ràng là xoá hoàn toàn thông tin khỏi server, không phải vô hiệu hoá tạm thời
- Với một số App đặc thù thì có thể thêm phần xác nhận qua mail, cuộc gọi khi tiến hành xoá tài khoản, mình thì cho hiển thị cảnh báo như hình trên để tránh việc người dùng bấm nhầm nút xoá.
Thường các lập trình viên iOS sẽ nắm rõ các quy định này thông qua các file document từ WWDC, mình thì không phải lập trình viên chuyên nghiệp, làm nhiều với Javascript hơn, Swift thì khi cần mới code nên ít cập nhật quy định mới từ Apple. Mình trang bị tính năng này cũng nhanh, xíu là xong, submit lại thì được duyệt lên Store luôn ^^
*Mình có làm phiên bản Android bằng Flutter và đã lên Google Play, Google cũng yêu cầu mình làm nút xoá tài khoản nhưng mình không làm thì họ vẫn cho lên Store haha.
Qua những kinh nghiệm này mình cảm nhận được việc Apple cực kì quan tâm đến trải nghiệm người dùng, họ muốn người dùng thực sự kiểm soát và quản lý được dữ liệu cá nhân khi sử dụng App trên Apple Store, phần duyệt thật sự rất gắt và cũng khá lâu, mình submit xong thì họ sẽ duyệt vào khoảng 3-4h sáng, lần update mới đây thì tốn 1 ngày để App phiên bản mới được duyệt lên Store.

Mọi người có thể trải nghiệm miễn phí App English Journey tại Apple Store và Google Play nha (phiên bản Android sẽ được cập nhật mới vào tuần sau).
https://apps.apple.com/us/app/english-journey-by-vuive/id1573506377
https://play.google.com/store/apps/details?id=com.ieltsvuive.english_journey