Vào một ngày cuối năm 3 đại học, giữa lúc còn băn khoăn về hướng đi trong tương lai, mình tình cờ nghĩ đến phát triển mobile app và đăng ký một khóa học Flutter trên Udemy. Học xong mình lại bỏ đấy để theo chuyên ngành khác, nhưng rồi nhận ra cũng hơi “chua” nên quyết định quay lại làm thử một dự án cá nhân.
Bắt đầu với tâm trạng hào hứng, mình tạo 1 project document (Thứ mà mình học được từ môn Nhập môn Công nghệ phần mềm) - đây là tài liệu quan trọng trong giai đoạn phân tích và thiết kế phần mềm.
Rồi nhanh chóng vẽ flow chart, wireframe,... và tạo một task list trên Notion rồi nhảy vào code luôn. Sau khoảng 2 tháng, ứng dụng cơ bản đã hoàn thành.
Nhận thấy app đã “tạm ổn”, mình tạo tài khoản Google Play Developer với $25 phí một lần. Không có kinh nghiệm, mình học khóa Google Play Store Listing (miễn phí) để chuẩn bị.
Rồi kiếp nạn đầu tiên ập đến: cần 20 người test và giữ trong 2 tuần (giờ chỉ cần 12 người). Không còn cách nào khác, mình nhờ bạn bè và cài máy ảo để test, mất đâu đó 3 tuần mới qua vòng này.
Tiếp theo là kiếp nạn xác thực danh tính. Dù phần này khá dễ (tải tài liệu chứng minh là xong), nhưng việc nó cảnh báo “không xác thực sẽ xóa tài khoản” cũng khiến mình hoảng nhẹ.
Sau tất cả, mình sẽ điền form để đưa app lên production. May mắn là cuối cùng app cũng được duyệt.
Kinh nghiệm: Đưa app lên Play Store không quá khó. Hệ thống chủ yếu kiểm tra tự động, nên chỉ cần có tính năng cơ bản là đủ, sau đó bạn có thể cập nhật dần.
Khi nhận khoản donate đầu tiên (test thử 50k), Play Store yêu cầu thêm tài khoản ngân hàng và sao kê để xác minh. Lúc đó mình lười nên dùng ViettelPay vì có sao kê online. Nhưng đến ngày thanh toán thì tiền không về vì ViettelPay không nhận ngoại tệ. Cuối cùng mình phải ra cây ATM của Agribank in sao kê để được duyệt.
Tháng sau, mình nhận được khoản thanh toán đầu tiên (sau khi trừ 15% phí Google Play) và bất ngờ vì ngân hàng không tính phí. Nhưng điều này chỉ đúng với khoản tiền nhỏ. Ở đợt thanh toán sau (~$15), mình bị trừ thêm $2 + 2% phí chuyển đổi ngoại tệ. Từ đó, mình đặt threshold $100 để tránh phí quá cao.
Kinh nghiệm: Tìm hiểu kỹ phí chuyển đổi ngoại tệ của ngân hàng, tránh trường hợp bị âm tài khoản do phí cao hơn số tiền nhận được.
Để đưa ứng dụng lên App Store, bạn phải có thiết bị Apple. Mình thử cài giả lập nhưng thấy quá rắc rối nên quyết định mua Mac Mini (hưởng khuyến mãi giảm giá sinh viên). Xui xẻo là tháng sau Apple ra Mac Mini M4, còn mình thì đã hết thời gian gọi hỗ trợ để phàn nàn…
Bỏ qua chuyện đó, lần đầu dùng macOS, mình mù mờ với việc build Flutter app qua Xcode. Lỗi liên tục, chatGPT cũng không cứu nổi, mình phải mò mẫm Stack Overflow và GitHub để tìm giải pháp. Và build trên Xcode thì tốn thời gian kinh khủng, build bằng command line thì nhanh hơn.
Đăng ký tài khoản Apple Developermất $99/năm, nhưng “phóng lao phải theo lao”. Mình gặp trục trặc khi thanh toán bằng thẻ, cuối cùng chuyển sang MoMo và được duyệt sau mấy ngày. App build xong, mình đưa file IPA đầu tiên lên App Store.
Kinh nghiệm: Hoàn thiện app trước khi đăng ký tài khoản Developer để tối ưu thời gian, vì mỗi lần review mất ít nhất một ngày, và Apple thường bắt lỗi rất kỹ. Và nó sẽ bắt một vài lỗi một lần thôi, kiểu thấy lỗi nào thì báo liền, giải quyết xong thì check tiếp.
App Store có người thật review nên khắt khe hơn rất nhiều. Chưa kịp vui thì mình bị dính lỗi 4.3 - Design - Spam. Reviewer cho rằng app về bói toán, tử vi là nhóm bão hòa nên không duyệt. Mình không chấp nhận vì app vốn là “nhật ký” có yếu tố Tarot nên mỗi lần mình cập nhật UI sẵn gửi lại.
Lần nào cũng vậy, reviewer lại “quất” vào mặt mình lỗi 4.3. Họ cứ từ chối và trả lời app cần tính năng “unique” mới được xem xét. Thế là mình vội vàng bổ sung tính năng mới, quay video demo và giải thích cặn kẽ. Nhưng reviewer này vẫn chỉ chụp màn hình các lá bài Tarot và từ chối tiếp.
Trong lúc tuyệt vọng, mình học được một mẹo từ Reddit: hủy submission và đợi một thời gian để gặp reviewer khác. Lần này, mình viết note thật chi tiết và “thổ lộ” rằng mình đã bỏ 2 tháng để cập nhật theo yêu cầu của App Store. Và trước tiên hết, mình bị từ chối vì 4.3 khi họ chỉ mới review được 5 phút (kiểu thấy liên quan đến bói toán là 4.3 cái đã). Sau đó mình tìm form appeal cho ứng dụng, và mình cũng trả lời lại reviewer những gì mình đã giải thích trước đó.
Điều bất ngờ đã xảy ra: reviewer mới đã chịu đánh giá lại app, chỉ rõ những lỗi còn thiếu và gợi ý cách sửa. Sau khi mình fix, họ đã duyệt ứng dụng Tarot Journal.
Kinh nghiệm: Khi submit app, hãy viết note rõ ràng, demo chi tiết tính năng và kiên nhẫn trả lời reviewer. Nếu gặp khó khăn, hủy submission và thử lại để gặp reviewer khác. Phương án cuối cùng là nộp form appeal nếu bạn thấy ứng dụng của mình xứng đáng.
Đây là hành trình đầy “kiếp nạn” mình đã trải qua để đưa app lên Play Store và App Store. Dù có lúc chán nản, nhưng mỗi khó khăn lại giúp mình học hỏi và trưởng thành hơn. Hy vọng kinh nghiệm này sẽ giúp bạn bớt “đau khổ” hơn trong quá trình đưa ứng dụng lên store! 🚀