2017-08-26 1 views
0

J'essaie de créer un point de terminaison de téléchargement pour mon application mobile. L'application est disponible sur l'App Store et Play Store. Je souhaite avoir une seule URL pouvant être utilisée par les utilisateurs pour télécharger l'application sur un appareil iOS ou Android. J'essayais de savoir si je pouvais créer une fonction cloud pour firebase à cette fin. Je pensais vérifier la user-agent pour la demande et selon que la demande provenait d'un appareil iOS ou d'un appareil Android ou d'un navigateur Web, rediriger l'utilisateur vers une URL appropriée. J'ai vérifié que les informations sur le périphérique sont présentes dans l'en-tête user-agent. Par exempleFonction Cloud pour Firebase pour rediriger vers une URL

"user-agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 10_2 like Mac OS X) AppleWebKit/602.3.12 (KHTML, like Gecko) Version/10.0 Mobile/14C89 Safari/602.1 AppEngine-Google; (+http://code.google.com/appengine; appid: s~gcf-http-proxy)" 

Je suppose que la prochaine chose à faire était de rediriger l'utilisateur vers l'URL de l'App Store dans le cas ci-dessus. J'ai essayé d'utiliser res.redirect mais cela ne fonctionne pas. Cela finit par rediriger l'utilisateur vers cloud-function-base-url/redirect-url au lieu de simplement redirect-url.

Vous trouverez ci-dessous le code de la fonction cloud qui tente juste de rediriger vers www.google.com lorsque la fonction est déclenchée depuis le navigateur.

exports.appDownload = functions.https.onRequest((req, res) => { 
    console.log(stringify(req.headers)) 
    // This will eventually redirect to a store URL based on the phone in user-agent 
    res.redirect('www.google.com'); 
}); 

Cela finit par rediriger le navigateur base-url/www.google.com au lieu de simplement www.google.com et je reçois un message d'erreur indiquant Not Found. Je voulais rediriger le navigateur vers www.google.com.

Je voulais vérifier s'il est possible d'atteindre ce qui est indiqué ci-dessus en utilisant une fonction de cloud pour firebase.

+0

S'il vous plaît montrer votre code qui doesn ' t travaillez comme vous l'attendez. –

+0

Désolé, j'essayais juste de vérifier s'il est possible de rediriger le navigateur vers une URL différente (l'url de l'app store dans mon cas) si j'appelle une fonction de cloud depuis un navigateur. J'ai posté le code que j'ai essayé. –

Répondre

1

Le documentation for redirect() suggère que vous deviez lui donner une URL complète. Notez le schéma "https" est présent ici (vous donnez juste "www.google.com", qui serait pris comme un chemin par rapport à l'URL actuelle):

res.redirect('https://www.google.com/') 
+0

Génial, merci pour la réponse. Ça marche. Allez Firebase! –