2016-06-30 9 views
2

イオンアプリ内でソーシャル共有を実装しようとしていますが、ネイティブ共有シートを使ってリンクを正常に共有できました。リンクが共有されている人によってリンクがクリックされると、そのリンク内のアイテムにリンクされます。ユーザーがアプリをインストールしている場合は、アプリをインストールするようにユーザーに指示します。しかし、それはそのような方法ではなく、PlayStoreまたはブラウザで開くかどうかを尋ねます。以下はアプリにリンクするイオンアプリ内でリンクを共有する方法

.controller('myCtrl', function($state, $cordovaContacts, $ionicActionSheet, $cordovaSocialSharing) { 
    $scope.share = function(id) { 
    $cordovaSocialSharing 
     .share("my Link Description", null, null,"https://play.google.com/store/apps/deatils?com.ionicframework.myapp/app/item/"+id) // Share via native share sheet 
     .then(function(result) { 
     // Success! 
     }, function(err) { 
     // An error occured. Show a message to the user 
     }); 
    } 
    } 
}) 

コルドバのソーシャルシェアをインストールした後、正常リンクを共有し、私は期待通りのリンクが動作することを拒否するとビューは、この

<a ng-click="share(id)"><i class="ion ion-share"></i> </a> 

ようなもので、私が行った最初のものです私はさらに調査を行いました。カスタムURLスキームPhoneGap Pluginは、電子メールやウェブページのリンクをクリックしてアプリを起動できるように設計されたCordovaのクールなプラグインです

プラグを取り付けた後、このリンクはこのように使用されます。

<a href="mycoolapp://">Open my app</a> 
<a href="mycoolapp://somepath">Open my app</a> 
<a href="mycoolapp://somepath?foo=bar">Open my app</a> 
<a href="mycoolapp://?foo=bar">Open my app</a> 

が、私はソーシャル共有の実装には、この生のいずれかを置く場合は、それが書かれているとして、それはそれを共有し、そのリンクをクリックすることはできません。

+0

私は正確に同じことをやろうとしています。解決策は見つかりましたか? – DevStarlight

+0

まだ解決策が見つかりませんでした。 – kplus

答えて

0

大丈夫です。ステップバイステップで行きましょう。

まず第一に、あなたは、インストールするためにあなたがURL schemeに使用するプラグイン(私はthisいずれかを使用)、また、あなたのアプリexample://http URL http://example.comをリンクuniversal-linkプラグインだけでなく、必要とします。 すべてのプロセスの後、あなたの​​3210ファイルは、そのようにする必要があります:

<plugin name="cordova-plugin-customurlscheme" spec="~4.2.0"> 
    <variable name="URL_SCHEME" value="example" /> 
    <variable name="ANDROID_SCHEME" value=" " /> 
    <variable name="ANDROID_HOST" value=" " /> 
    <variable name="ANDROID_PATHPREFIX" value="/" /> 
</plugin> 

<plugin name="cordova-universal-links-plugin" spec="~1.1.2" /> 
<universal-links> 
    <ios-team-id value="xxxxxx" /> 
    <host name="angular.example.com" scheme="https"> 
    <path event="openUrl1Page" url="/url1/*" /> 
    <path event="openUrl2Page" url="/url2/*" /> 
    </host> 
</universal-links> 

:あなたはul_web_hooksというフォルダが作成されていることがわかります。 <link>要素をメインの.htmlファイルにコピーしてください(実際には私のためにはそれがなくても動作しますが、ドキュメントでは必要と言います)。

:あなたはURLスキームを使用する場合にも動作するはず

adb shell am start -W -a android.intent.action.VIEW -d "http://angular.example.com/url1/x"

:あなたは2つの物事が、あなたのようなあなたのapp throughtコンソール入力して何かを開くことができなければならないことを行っている後

adb shell am start -W -a android.intent.action.VIEW -d "example://url1/x"

次に、手動でブートストラップする必要があります。cordovaは、アプリケーションに応じてブートストラップを決定します。アプリが読み込まれる方法(アプリを開く一般的な読み込み、または誰かがリンクをクリックしたため)(ここでは、resumepauseの可能性のあるステータスを対応するaddeventListenerで処理する必要があります)。

$urlRouterProvider.otherwise()を右に設定することができるので、pathを使用することは素晴らしいテクニックですので、ご注意ください。

私たちの最後のステップは、初めてリンクを開いたユーザーで、まだアプリケーションがインストールされていない(URLを正常に開く)ユーザー用のウェブサイトを作成することです。

希望すると助かります!

+0

ありがとう、しかし、あなたはどのようにurlのparamに基づいてアプリ内の実際のページにリダイレクトするかを理解することができましたか?私はドキュメントのステップに従っていましたが、うまく動作しませんでした – kplus

+0

私はドキュメントの方法でそれを行うことができませんでしたので、 'index.js'' var path = "/ home ";"そして後でそれを私の '$ urlRouterProvider.otherwise(path)'で使用します。私はまた、方法に従ったhttp://stackoverflow.com/questions/21842276/manually-bootstrapping-angularjs-from-cordova-deviceready-eventブートストラップ。それが役に立てば幸い! – DevStarlight

0
window.open('https://www.facebook.com/sharer/sharer.php?u={{YOUR URL}}, '_system', 'location=yes'); 

window.open('https://www.twitter.com/share?url={{YOUR URL}}, '_system', 'location=yes'); 
+4

ようこそスタックオーバーフロー!このコードスニペットは問題を解決するかもしれませんが、[説明を含めて](// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)本当にあなたの投稿の質を向上させるのに役立ちます。将来読者の質問に答えていることを覚えておいてください。そうした人々はあなたのコード提案の理由を知らないかもしれません。あなたのコードに説明的なコメントを詰め込まないようにしてください。これは、コードと説明の両方の可読性を低下させます! – kayess

関連する問題