2017-11-17 34 views
5

मैं ज़ैमरिन फॉर्म (क्रॉस प्लेटफ़ॉर्म) का उपयोग करके एक ऐप विकसित कर रहा हूं, और अक्षांश और देशांतर पारित करने के लिए, मैं अपने ऐप से वेज़ ऐप खोलने की कोशिश कर रहा हूं।
यह वेज़ बहुत अच्छी तरह से खुलता है, लेकिन वेज़ बस खुलता है, यह पता चला कि पता या अक्षांश/देशांतर पारित करने की कोशिश नहीं की गई।
वेज़ डीप लिंक

कुछ विचार मैं इसे कैसे काम करता हूं?

--- संपादित ---
अंत में, यह @SushiHangover से काम किया, विचार का उपयोग कर, मैं वांछित परिणाम प्राप्त करने में कामयाब रहे। अंतिम कोड यहाँ है:

public static Task<bool> OpenWazeAndroid(decimal latitude, decimal longitude, string address) 
     { 
      if (IsAndroid()) 
      { 
       try 
       { 
        var lat = latitude.ToString().Replace(",","."); 
        var longi = longitude.ToString().Replace(",", "."); 
        const string wazePrefix = "waze://"; 
        Android.Content.Intent intent = new Android.Content.Intent(Android.Content.Intent.ActionView, Android.Net.Uri.Parse(wazePrefix)); 
        string wazeURL = ("https://waze.com/ul?q=" + address + "&ll=" + lat + "," + longi + "&z=8&navigate=yes"); 
        wazeURL = wazeURL.Replace(" ", "%20"); 
        var resolveInfo = Android.App.Application.Context.PackageManager.ResolveActivi‌​ty(intent, 0); 
        Android.Net.Uri wazeUri; 
        if (resolveInfo != null) 
        { 
         wazeUri = Android.Net.Uri.Parse(wazeURL); 
        } 
        else 
        { 
         wazeUri = Android.Net.Uri.Parse("market://details?id=com.waze"); 
        } 
        intent.AddFlags(Android.Content.ActivityFlags.NewTask); 
        intent.SetData(wazeUri); 
        Android.App.Application.Context.StartActivity(intent); 

        return Task.FromResult(true); 
       } 
       catch (Exception ex) 
       { 
        App.Shell.Alert("Erro ao abrir o Waze.\n" + ex.Message); 
        return Task.FromResult(false); 
       } 

      } 
      return Task.FromResult(false); 
     } 
+0

यह सही तरीका है की तरह लग रहा है, यह सोचते हैं कि 'client.Latitude' और' Longitude' अच्छा मान। उदाहरण के लिए, "https://waze.com/ul?q=Hawaii" उदाहरण के लिए, यदि आप खुले हैं तो वेज़ व्यवहार करते हैं? –

+0

मैंने पते के साथ भी कोशिश की, यह वही व्यवहार था, बस ऐप खोलें, जगह की तलाश नहीं कर रहे थे। –

उत्तर

4

Android पर प्रत्यक्ष ऐप्लिकेशन लिंक लिंक गुण/विकल्प (Waze आईओएस करता है) सम्मान नहीं करता है, इतनी गहरी के साथ वेब आधार यूआरएल (https://waze.com) करने के लिए ठीक से खुला Waze का उपयोग लिंक विकल्प।

उदाहरण:

const string wazeAppURL = "waze://"; 
var wazeURL = $"https://waze.com/ul?ll={loc[0]},{loc[1]}&navigate=yes"; 
var intent = new Intent(Intent.ActionView, Android.Net.Uri.Parse(wazeAppURL)); 
var resolveInfo = PackageManager.ResolveActivity(intent, 0); 
var wazeUri = resolveInfo != null ? Android.Net.Uri.Parse(wazeURL) : Android.Net.Uri.Parse("market://details?id=com.waze"); 
intent.SetData(wazeUri); 
StartActivity(intent); 
+0

यदि कोई https https है, तो यह ब्राउज़र खोलता है, ऐप नहीं ... मैं फिर कोशिश करूंगा, लेकिन कम से कम मेरे लिए, यह ऐप –

+0

वेज़ रजिस्ट्रार वेज़ और https खोलने के लिए काम नहीं कर रहा है क्योंकि यह गहरे लिंक का समर्थन करता है, अगर उपयोगकर्ता ब्राउज़र बनाम वेज़ ऐप को चुनता है, तब ब्राउजर खुलता है, वेज़ पर जाता है जहां उपयोगकर्ता को ऐप पर वापस भेज दिया जाता है। – SushiHangover

+0

अच्छा! मैं यहां कोशिश कर रहा हूं, लेकिन यह "var resolInfo = PackageManager.ResolveActivity (मंशा, 0) में एक त्रुटि दिखा रहा है;" इस भाग के बारे में क्या है? –

संबंधित मुद्दे