2016-10-06 1 views
0

Beobachtung: 1) Wenn eine App bei einem Gerät, das bereit ist ausgelöst wird, ausgelöst wird, wird die App von dem Benutzer beendet. Wenn der Benutzer auf einen Apps Link klickt, öffnet das Plugin die App richtig und geht auf die entsprechende Seite (hier wird Device Ready ausgelöst und das Deeplink Observable dient dem eingehenden Deeplink). 2) Afte Schritt 1 Wenn die App geschaltet wird, bei Pause-Trigger, klickt der Benutzer jetzt auf einen App-Link von Google Mail, hier öffnet Plugin die App und das Ereignis "onResume" wird aufgerufen. Frage: Wird das gleiche ondeviceready.subscribe() das gleiche Szenario dienen? In meinem Fall passiert es nicht. Und es funktioniert nie bei allen folgenden Pause/Resume (Flip App und Comeback zur App wieder).Wie gehst du mit Lebenslauf-Szenarien im Deep-Link-Plugin um?

Um dies zu behandeln Ich habe den gleichen Anruf auf onResume Block hinzugefügt:

 $cordovaDeeplinks.route({ 
      '#/home/xyz': { 
       target: 'xyz', 
       parent: 'home' 
      } 
     }).subscribe(
      function(match) { 
      }, function (nomatch) {  //Since my url doesn't match, i am handling the navigation on nomatch.       
       var loc = nomatch.$link.fragment; 
       $rootScope.$apply(function() { 
        $location.path(loc); 
       }); 
      } 
     ); 

Also ich Deeplink Route Logik sowohl in ondeviceready und onResume Aufruf haben zusammenzufassen.

Und es funktionierte für das ganze Szenario, außer: Die auf dem ersten Onesume Anruf, wenn der Ondeviceready Deeplink bereits verbraucht wird. 1) eine App startet, ein Gerät bereit Ereignis auslöst, dann Benutzer tötet die App. 2) Benutzer klickte auf einen Link von Google Mail und App geöffnet. 3) Jetzt die App wechseln und erneut auf den Link klicken - fehlgeschlagen ---- (dies ist der einzige Fall, in dem es fehlschlägt) 4) Wiederholen Sie Schritt-3-übergangen - gut gearbeitet 5) Wiederholen Sie den Schritt-3 - geben - hat gut funktioniert

Debuggen weiter, findet folgende: auf Gerät bereit: der Beobachter auf meiner App aufgerufen werden, bevor das Deeplink Objekt auf Plugin einem forts erstellt: der Beobachter auf meiner App nach dem Deeplink aufgerufen Objekt wird auf dem Plugin erstellt.

Um das zu beheben, habe ich jetzt meinen ondevice ready code wie unten geändert und den deeplink code von onresume entfernt.

//outside onready 
    function subscribe_deeplink(){ 
     $cordovaDeeplinks.route({ 
      '#/home/xyz': { 
       target: 'xyz', 
       parent: 'home' 
      } 
     }).subscribe(
      function(match) { 
      }, function (nomatch) { 
       $rootScope.isNavigated = true; 
       var loc = nomatch.$link.fragment; 
       subscribe_deeplink(); 
       $rootScope.$apply(function() { 
        $location.path(loc); 
       }); 
      } 
     ); 
    } 

    //inside onready 
    $cordovaDeeplinks.route({ 
      '#/home/xyz': { 
       target: 'xyz', 
       parent: 'home' 
      } 
     }).subscribe(
      function(match) { 
      }, function (nomatch) { 
       $rootScope.isNavigated = true; 
       var loc = nomatch.$link.fragment; 
       subscribe_deeplink(); 
       $rootScope.$apply(function() { 
        $location.path(loc); 
       }); 
      } 
     ); 

Nun ist die Werke für meinen Deeplink-App auf allen Szenarien ..

ich einige Dinge wissen will: 1) Ist es eine vorgeschlagene Art und Weise auf dem oberen Weg zu gehen ???? 2) Warum Onresume-Szenarien nicht im Deeplink-Plugin diskutiert werden. Wie Sie mit Lebenslaufszenarien umgehen. Bin ich etwas auf der Anwendung fehlt

Antwort

0

Bei Branch.io wir Haken in beide onDeviceReady und onResume für diese. Das Grundgerüst:

onDeviceReady: function() { 
    Branch.initSession(); 
}, 
onResume: function() { 
    Branch.initSession(); 
}, 
initialize: function() { 
    document.addEventListener('resume', onResume, false); 
    document.addEventListener('deviceready', onDeviceReady, false); 
}, 
function DeepLinkHandler(data) { 
    alert('Data from initSession: ' + data.data); 
} 

Dies ist offensichtlich nicht eine perfekte Korrelation mit der Deep-Link-Plugin, sondern könnte als Referenzpunkt nützlich sein.

Shameless-Plug: Sie können auch die Deep Link-Plattform Branch.io ausprobieren, da sie alle die gleichen Dinge zusammen mit einer Reihe zusätzlicher Vorteile wie Deferred Deep Linking und Attribution Analytics bietet.

Verwandte Themen