質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
AngularJS

AngularJSはオープンソースのJavaScriptフレームワークです。ブラウザ上で動作するウェブアプリケーションの開発にMVCアーキテクチャを取り入れることを目的としています。

Onsen UI

HTML5で記述されたモバイルアプリの高速化、およびネイティブアプリライクなUIが作れるフレームワーク。 様々なJavaScriptフレームワークと併せて使用することができます。スマートフォン向けアプリ、Webサイトに必要なアニメーション、UI/UXを実装することが可能になります。

Monaca

「Monaca」はiOS、Android、Windows向けのアプリ開発に対応した、Cordovaベースのモバイルアプリ開発プラットフォームです。HTML5、JavaScriptといったWeb標準技術を用いてモバイルアプリ開発を行うことができます。

Q&A

1回答

3268閲覧

window.openの_systemで「既にログインされています。・・・」アラートが表示されます。

kuroneko334

総合スコア8

AngularJS

AngularJSはオープンソースのJavaScriptフレームワークです。ブラウザ上で動作するウェブアプリケーションの開発にMVCアーキテクチャを取り入れることを目的としています。

Onsen UI

HTML5で記述されたモバイルアプリの高速化、およびネイティブアプリライクなUIが作れるフレームワーク。 様々なJavaScriptフレームワークと併せて使用することができます。スマートフォン向けアプリ、Webサイトに必要なアニメーション、UI/UXを実装することが可能になります。

Monaca

「Monaca」はiOS、Android、Windows向けのアプリ開発に対応した、Cordovaベースのモバイルアプリ開発プラットフォームです。HTML5、JavaScriptといったWeb標準技術を用いてモバイルアプリ開発を行うことができます。

0グッド

1クリップ

投稿2017/04/14 09:48

編集2022/01/12 10:55

###前提・実現したいこと
MonacaでOnsenUIを使ってアプリを開発しています。

###発生している問題・エラーメッセージ
iphoneのMonacaデバッガーをインストールし、その中で、
外部ブラウザで開きたいもの(GoogleMAPや外部のサイト)があります。
onclickの中に外部リンクを開くようのコードを書いて、実行すると

既にログインされています。ログアウトして再度QRコードを読み取ってください。

というアラートが表示されてしまいます。
外部アプリが立ち上がり正常に表示されるのですが、monacaデバッガーアプリに戻るとアラートが表示されてしまいます。
(開くときにもチラッと見えることもあります。)

###該当のソースコード

javascript

1var url = "http://yahoo.com"; 2window.open(url, '_system');

###試したこと
端末の別のアプリの影響なのかと思い、別の端末でも試しましたが同じアラートが表示されます。

また、cordova.InAppBrowserを利用して試しても同じでした。

javascript

1var gps_lat = '35'; 2var gps_lng = '139'; 3var name = '東京タワー'; 4cordova.InAppBrowser.open('https://maps.google.com/maps?ie=UTF8&f=d&dirflg=w&saddr=' + gps_lat + ',' + gps_lng + '&daddr=' + name + '&type=dep', '_system')

上記コードはGoogleMAPでのナビ検索を外部アプリで開くようにしたものです。

###補足情報(言語/FW/ツール等のバージョンなど)
iphone5s、iphone6で発現しました。
Android端末ではアラートは出ませんでした。

この現象はmonacaデバッガー固有の現象(リリースの際に無視出来るもの)なのか、何か対策が出来るものなのかわからない状態です。
解決方法をお教えいただければと思います。

よろしくお願い致します。

###ご質問を受けての補足です

アラートが出ているタイミングと、具体的な「外部ブラウザで開きたいもの」が何なのかもう少し詳しく知りたいですね。
monacaから開くときにたとえば自動的にログインするようになっていたとして、既にGoogleChromeが立ち上がっていたら「既にログインされている」という状態になるのかもしれません。

こちらを受けまして、新規プロジェクトで具体的な発現方法を再現してみました。

MonacaクラウドIDE上から新規プロジェクト
「OnsenUI AngularJS1」でのSplitterMenuをテンプレートで作成し、
メニューを1項目をonclick設定して外部リンクを開くようにしてみました。

html

1<!DOCTYPE HTML> 2<html> 3<head> 4 <meta charset="utf-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"> 6 <meta http-equiv="Content-Security-Policy" content="default-src * data:; style-src * 'unsafe-inline'; script-src * 'unsafe-inline' 'unsafe-eval'"> 7 <script src="components/loader.js"></script> 8 <script src="lib/angular/angular.min.js"></script> 9 <script src="lib/onsenui/js/onsenui.min.js"></script> 10 <script src="lib/onsenui/js/angular-onsenui.min.js"></script> 11 12 <link rel="stylesheet" href="components/loader.css"> 13 <link rel="stylesheet" href="lib/onsenui/css/onsenui.css"> 14 <link rel="stylesheet" href="lib/onsenui/css/onsen-css-components.css"> 15 <link rel="stylesheet" href="css/style.css"> 16 17 <script> 18 ons.bootstrap() 19 .controller('AppController', function($scope) { 20 this.load = function(page) { 21 $scope.splitter.content.load(page); 22 $scope.splitter.left.close(); 23 }; 24 25 this.toggle = function() { 26 $scope.splitter.left.toggle(); 27 }; 28 29 30 }); 31 32 ons.ready(function() { 33 console.log("Onsen UI is ready!"); 34 35 }); 36 </script> 37</head> 38<body> 39 40 <ons-splitter ng-controller="AppController as app" var="splitter"> 41 <ons-splitter-side side="left" width="220px" collapse swipeable> 42 <ons-page> 43 <ons-list> 44 <ons-list-item ng-click="app.load('home.html')" tappable> 45 Home 46 </ons-list-item> 47 <ons-list-item ng-click="app.load('settings.html')" tappable> 48 Settings 49 </ons-list-item> 50 <ons-list-item onclick="window.open('http://yahoo.co.jp/','_system')" tappable> 51 About 52 </ons-list-item> 53 </ons-list> 54 </ons-page> 55 </ons-splitter-side> 56 <ons-splitter-content page="home.html"></ons-splitter-content> 57 </ons-splitter> 58 59 <ons-template id="home.html"> 60 <ons-page> 61 <ons-toolbar> 62 <div class="left"> 63 <ons-toolbar-button ng-click="app.toggle()"> 64 <ons-icon icon="md-menu"></ons-icon> 65 </ons-toolbar-button> 66 </div> 67 <div class="center"> 68 Main 69 </div> 70 </ons-toolbar> 71 <p style="text-align: center; opacity: 0.6; padding-top: 20px;"> 72 Swipe right to open the menu! 73 </p> 74 </ons-page> 75 </ons-template> 76 77 <ons-template id="settings.html"> 78 <ons-page> 79 <ons-toolbar> 80 <div class="left"> 81 <ons-toolbar-button ng-click="app.toggle()"> 82 <ons-icon icon="md-menu"></ons-icon> 83 </ons-toolbar-button> 84 </div> 85 <div class="center"> 86 Settings 87 </div> 88 </ons-toolbar> 89 </ons-page> 90 </ons-template> 91 92 <ons-template id="about.html"> 93 <ons-page> 94 <ons-toolbar> 95 <div class="left"> 96 <ons-toolbar-button ng-click="app.toggle()"> 97 <ons-icon icon="md-menu"></ons-icon> 98 </ons-toolbar-button> 99 </div> 100 <div class="center"> 101 About 102 </div> 103 </ons-toolbar> 104 </ons-page> 105 </ons-template> 106</body> 107</html>

html

1 <ons-list-item onclick="window.open('http://yahoo.co.jp/','_system')" tappable> 2 About 3 </ons-list-item>

こちらをタップすると、そのタイミングで「既にログインされています。ログアウトして再度QRコードを読み取ってください。」と表示されます。
(タイミングによっては外部リンクを開いた後monacaに戻ってくると表示されることもあります。)
外部アプリとしては「Safari」が立ち上がりました。
この状態でも上記アラートが立ち上がってしまうので困っています。。
どうにかアラートが表示されないようにすることは出来ないものでしょうか?
アラートが表示されなければ正常動作で問題ないのですが・・・

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

akabee

2017/04/15 14:15

アラートが出ているタイミングと、具体的な「外部ブラウザで開きたいもの」が何なのかもう少し詳しく知りたいですね。Monacaの問題というよりは「外部ブラウザで開きたいもの」が出している関連のアラートと予想します。たとえばGoogleChromeにはログインという概念が存在します。詳しい仕様は知らないのですが、monacaから開くときにたとえば自動的にログインするようになっていたとして、既にGoogleChromeが立ち上がっていたら「既にログインされている」という状態になるのかもしれません。
kuroneko334

2017/04/15 23:58

コメントありがとうございます!質問へ追記致しました。確かに自分も「外部ブラウザで開きたいもの」が関連しているかと思い、yahooホームなど別のURLを開いても同じ状況でした。。質問に補足を追加いたしましたので恐れ入りますがご確認をいただけますと幸いです。よろしくお願いいたします。
guest

回答1

0

QRコード等と表示されているため、「外部ブラウザで開きたいもの」がよほど特殊なのかと予想したのですがそういうわけではないのですね。私自身はAndroidの検証環境しか持ち合わせていないため現象の再現ができないのですが、monacaでの開発事例で同様の問題に直面したという情報はちらほら見かけます。
参考1
参考2

参考1のリンクではカスタムデバッガーでのみ発生するということで解決していますが、どちらにしても
何かのバグに近い事象のように思われます。monacaなのかcordovaなのか分かりませんが、根は深いと思われます。
クリティカルな解決策が提示できるわけではないのですが、私であれば以下のように対応します。

1.リリースビルドしてみて問題が発生しなければひとまずデバッグ時にその事象が出ることは許容する
2.リリースビルド時にも問題が発生したら、
2-1.WebIntentで問題が解消しないかどうか確認する
2-2.Webページへのリンクをすることを諦めて代替案を検討する
2-3.iOSではそのメッセージが出てしまうことをユーザーに開示したうえで配布する
2-4.iOSでの配布を諦める

もう少し、2-1.のような試行案が示せればよいのですが、私自身そこまでWEBページリンクのネタがありません。。。

投稿2017/04/17 02:09

akabee

総合スコア1947

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kuroneko334

2017/04/17 05:25

ご回答ありがとうございます。 確かに、カスタムデバッガーのみで発生する様な気がします。 (それならそれで取り敢えずどこに問題があるのかわかるので、全然良いのですが、、) まずはリリースビルドにて確認をしてみます! 確認後こちらの質問にて結果を報告させていただきます! よろしくお願い致します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問