Небольшая разработка программы, те ямы, которые мы пропускаем

внешний интерфейс сервер WeChat Canvas
Небольшая разработка программы, те ямы, которые мы пропускаем

Недавно был официально запущен инструмент для входа в систему с кодом сканирования апплета WeChat.

Оглядываясь на ход прошедшего месяца, пора остановиться и подвести поэтапные итоги, проанализировать прибыли и убытки и продолжить совершенствоваться. В этой статье давайте подытожим ямы, которые были пропущены в прошлом.

Эти ямы можно условно разделить на следующие категории:

  • Некоторые технические детали мини-программ несовместимы с широко используемыми технологиями. Хотя это упоминается в документации, легко прыгнуть в яму, если не смотреть внимательно.

  • Документация апплета слишком краткая, и в ней не указано, какие функции поддерживаются, а какие нет, об этом вы узнаете только при использовании.

  • Небольшая ошибка программы.

Перечислите еще несколько типичных ям.

1. Обратные данные GET и POST-запросов не поддерживают двоичные потоки.

Апплет поддерживает получение кода апплета по почте (немного похоже на хризантему). Я попытался получить изображение кода апплета с сервера WeChat через wx.request, но обнаружил, что возвращенный результат не может быть отображен. Я начал подозревать, что проблема с кодом.После отладки я обнаружил, что результат, возвращаемый сервером WeChat, был правильным, и апплет автоматически перекодировал двоичный результат. Что еще больше расстраивает, так это то, что при этом перекодировании теряется содержимое файла, и преобразование становится необратимым.

Итак, мы изменили план переноса сервера на промежуточную станцию, и разрешили аплету использовать wx.downloadFile для скачивания картинок с сервера. Получив от апплета запрос на загрузку картинки, сервер напрямую получает картинку кода апплета с сервера WeChat, а затем возвращает ее апплету в виде вложения.

задача решена.

2. Canvas и Image не поддерживают различные изображения.

QR-код используется для входа в систему с помощью скан-кода.. В начальной версии мы собираемся рисовать QR-код прямо на Canvas, затем использовать функцию wx.canvasToTempImage, чтобы сохранить его как файл изображения, а затем загрузить через компонент Image.

После отладки все прошло хорошо. При запуске я обнаружил, что иногда после отрисовки картинки функция wx.canvasToTempImage не вызывалась. Эта ситуация не может быть воспроизведена при отладке и иногда возникает во время работы, которая нестабильна.

Я внимательно проверил код, никаких проблем. После Google некоторые пользователи сети предложили решение: после завершения работы drawImage лучше всего подождать 3 секунды перед вызовом wx.canvasToTempImage, чтобы обеспечить успешное сохранение.

image

Ни Canvas, ни Image не поддерживают изображения Base64, и изображение нельзя сохранить..

Изначально мы сами генерировали QR-код, но позже, чтобы обеспечить совместимость с функцией «сканирования» WeChat, решили использовать код апплета.

Вначале мы устанавливаем src изображения в формат Base64 и получаем кодировку Base64 изображения через запрос с сервера. Со средством разработки апплета и тестом на айфоне проблем нет, а вот на андроид телефоне картинка не может нормально отображаться. О, оказывается, на Android ни Canvas, ни Image не поддерживают изображения Base64. Но... в документации по разработке апплета такого описания нет.

Как решить эту проблему на телефоне Android? Если изображение изменено на форму URL, апплет не может сохранить изображение, поэтому, даже если это одно и то же изображение, его необходимо каждый раз получать с сервера, что увеличивает нагрузку на сервер. Что ж, используйте wx.downloadFile для загрузки файла локально, а затем обработайте его.

image

3. Скорость распознавания кода апплета слишком низкая.

Как упоминалось выше, QR-код для входа, который мы использовали изначально, был QR-кодом (QRCode), сгенерированным нами, который является квадратным. Скорость распознавания высока, но недостатком является то, что он не поддерживает «зачистку» WeChat. Во время использования мы обнаружили, что значительное количество пользователей видели QR-код, и их первой реакцией было бы использовать WeChat для «сканирования» для сканирования QR-кода. Чтобы удовлетворить этот спрос, замените QR-код кодом апплета WeChat (немного похоже на хризантему).

Однако, по сравнению с квадратными QR-кодами, вероятность успеха идентификации небольших программных кодов очень низкая. Небольшой программный код находится далеко, слегка деформирован или направление не выровнено, что может привести к сбою распознавания. Типичный сценарий использования — инициатор входа проецирует код апплета на большой экран, из-за несоответствия разрешения проектора и компьютера картинка может искажаться. В этом случае подписывающий не может быть идентифицирован, как бы он ни сканировал. И все вышеперечисленное не проблема для квадратных QR-кодов.

Поскольку реализация и принцип распознавания кода апплета не являются открытыми, мы не можем принимать такие меры, как исправление ошибок изображения и восстановление, чтобы улучшить эффект распознавания.

Очень тяжело иметь и рыбу, и медвежью лапу.

4. По умолчанию мини-программа будет отправлена ​​с параметрами.

По поводу переадресации написано в официальном документе.

Определите функцию onShareAppMessage в Page, чтобы установить информацию о пересылке страницы.

  • Только если этот обработчик событий определен, в правом верхнем меню будет отображаться кнопка «Вперед».

  • Вызывается, когда пользователь нажимает кнопку вперед

Поэтому в реализации мы определяем этот метод и оставляем тело метода пустым. Затем появился недостаток: когда пользователь вошел в систему, а затем поделился ею, человек, получивший ее, щелкнул общую ссылку и вошел в состояние входа.

После долгой проверки выяснил, что причина в том, что при расшаривании параметры при загрузке текущей страницы тоже расшариваются, но в функции onShareAppMessage ничего не делается.

Кажется, что, ничего не делая, он по умолчанию использует общие параметры при загрузке страницы. Чтобы исправить эту ошибку, попробуйте вернуть объект и присвоить этому объекту два параметра: путь и заголовок.

Наконец решил это.

В дополнение к вышеупомянутому, есть много крошечных ошибок, чтобы назвать несколько. Хотя она была решена быстро, она все же несколько повлияла на эффективность разработки по сравнению с разработкой исходного кода.

Последний месяц был немного утомительным.

image

По сравнению с ошеломляющей рекламой мини-программы ранее, она на самом деле не так хороша, как мы себе представляли. Конечно, мы должны признать, что огромное количество пользователей платформы WeChat и удобство отсутствия необходимости загружать мини-программы не могут быть достигнуты ни одной другой платформой в Китае.

Для легкого приложения, такого как инструмент проверки кода сканирования, лучшим выбором может быть разработка апплета WeChat.

Что касается сложных приложений, вам, возможно, придется проявлять осторожность при разработке небольшой версии программы.

Добро пожаловать, чтобы обратить внимание на мою общедоступную учетную запись WeChat, отдел исследований и разработок терминала, общедоступную учетную запись, посвященную исследованиям и разработкам в области технологий!