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

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

新規登録して質問してみよう
ただいま回答率
87.20%
Objective-C

Objective-Cはオブジェクト指向型のプログラミング言語のひとつです。C言語をベースにSmalltalkが取り入れられています。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Authentication

Authentication(認証)は正当性を認証する為の工程です。ログイン処理等で使われます。

解決済

Yahoo メールアプリからiOS アプリにDeeplink ができません

umaggg
umaggg

総合スコア10

Objective-C

Objective-Cはオブジェクト指向型のプログラミング言語のひとつです。C言語をベースにSmalltalkが取り入れられています。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Authentication

Authentication(認証)は正当性を認証する為の工程です。ログイン処理等で使われます。

1回答

1評価

1クリップ

133閲覧

投稿2019/05/22 06:24

編集2019/05/23 09:00

前提・実現したいこと

iOS アプリを開発しております。
ユーザ登録機能において、メールアドレス認証で、認証URL からアプリにDeeplink させる方式をとっているのですが、
Yahoo メール(@yahoo.co.jp) をYahoo メールクライアントアプリ(https://itunes.apple.com/jp/app/yahoo-%E3%83%A1%E3%83%BC%E3%83%AB/id669931877?mt=8)
で開く際、クライアントアプリから外部アプリにDeeplink できない問題に直面しています。

発生している問題・エラーメッセージ

上記の認証URL から外部アプリにDeeplink させる方法として URL Scheme を使っています。
またyahoo メールのクライアントアプリは、URL をクライアントアプリ内のWebView で開く仕様となっており、
WebView 側でURL Scheme をハンドルできていないようです。

該当のソースコード

以下のように、認証URL を開くと、Javascript でURL scheme を呼び出すページを用意しています。

HTML

<script type="text/javascript"> var fallback_url = "null"; var url_scheme = "[URL SCHEME]"; var loc = window.location; function redirect(loc) { loc.href = url_scheme; if(fallback_url.startsWith("http")) { setTimeout(function() { loc.href = fallback_url; }, 3000) } } </script> <body onload="redirect(loc)"> <p>       <a href="#" onclick="redirect(loc)">アプリを開く</a> </p> </body>

試したこと

Yahoo メールアプリ側で、外部アプリのURL scheme 、あるいはUniversal Link でのDeeplink が制御されている可能性があります。
全く同じ流れで、他のメールクライアントアプリ(iOS 純正のメールアプリ、Gmail アプリ)では外部アプリにDeeplink できたためです。

※ ただし、"AppStore" アプリは、URL scheme 、Universal Link どちらでもDeeplink できました。
(Music など他の純正アプリは同様の方法でDeeplink できませんでした。)

少しWeb で調べてみたのですが、同様の問題を取り扱っているページが見当たらなかったため、質問するに至りました。
ユーザ登録が必須であるアプリ開発において、認証URL からユーザ登録を行うフローは一般的であるかと思いますので、
同じ問題に直面した経験のある方、あるいは今後この問題に向き合う方のためになればと思います。
よろしくお願いいたします。

追記(2019-05-23)

Yahoo 公式から見解をいただきました。
現状ホワイトリストに登録されたもののみ動作する仕様とのことです。
Yahoo メールクライアントをつかっているユーザには、認証URL をコピーして、Safari などのブラウザに貼り付けてもらうよう促すようにする必要がありそうです。

いつもYahoo! JAPANをご利用くださいまして、ありがとうございます。 お問い合わせの「認証URLをYahoo!メールアプリのWebViewで開く場合 アプリにDeeplinkできない」件についてご案内いたします。 iOS版Yahoo!メールアプリ内のブラウザーにおいて、他のアプリを 起動させるようなURLは、現状ホワイトリストに登録されたもののみが 動作する仕様となっております。 お知らせくださいました事象につきましては、現時点での iOS版Yahoo!メールアプリ側の仕様です。 恐れ入りますがYahoo!メールアプリ上で、その他の方法で 画面を開くことはできません。 今後、任意のアプリを起動させるURLが全て動作するよう 弊社でも対応を検討しておりますが、具体的な対応時期は 未定となっております。 ご不便をおかけし恐縮ですが、何卒ご理解ご了承くださいますよう お願い申し上げます。 これからもYahoo! JAPANをよろしくお願いいたします。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Objective-C

Objective-Cはオブジェクト指向型のプログラミング言語のひとつです。C言語をベースにSmalltalkが取り入れられています。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Authentication

Authentication(認証)は正当性を認証する為の工程です。ログイン処理等で使われます。