web-dev-qa-db-ja.com

リンクとして私のURLスキームを使用してSMSからアプリを開きます

アプリでURLスキームsmstestを宣言したので、Safariでは検索バーsmstest:my-testまたはsmstest://my-testに書き込むことができ、アプリが開いています。

メッセージアプリがリンクとしてsmstest:my-testまたはsmstest://my-testをフォーマットし、ユーザーがそれと私のアプリをタップできるように、SMSテキストから同じことを達成しようとしています。呼び出されますが、テキストはリンクとしてフォーマットされていません。

SMSからアプリを開くための唯一の解決策は、スクリプトでインターネットページを指すことです。

ありがとうございました。

編集:面白いことに、IMO Messengerをインストールしましたが、URLスキームとしてコードを含むSMSを受け取り、メッセージアプリによってリンクとして解析されます。アプリで発生しないのはなぜですか?URLの前後にスペースを入れて、いくつかのメッセージを試しましたが、何も起こりません。

13
emenegro

一般に、URLスキームを使用してメッセージアプリからアプリケーションを開く標準的な方法があります。

  1. Info.plistファイルにURLスキームを追加します:my-scheme。
  2. ターゲットiPhoneにアプリケーションをインストールします。
  3. SMS次のようなテキストで送信します: "my-scheme:// it-is-my-scheme。

そして、すべてがうまく機能します。 しかしそれが機能せず、ソースコードが間違っていると思う場合、1つの興味深いケースが考えられます。しかし、そうではありません。このケースを調査してみましょう:

  1. URLスキームを追加してアプリケーションをインストールする前に、SMSを送信してください。予想どおり、メッセージはプレーンテキストとして表示されます。
    First SMS

  2. 次に、URLスキームをinfo.plistに追加しましょう。
    Info.plist

  3. 最後にアプリケーションをインストールし、同じSMSを送受信します。
    Second SMS

ご覧のとおり、最後のメッセージはリンクのように表示され、それをタップするとiOSがアプリケーションを開きます。 しかし最初のメッセージはプレーンテキストとして表示されたままであり、タップすることはできません。メッセージアプリのロジックはそのように実装されているようです。

次に、iPhoneからアプリケーションを削除し、同じSMSをもう一度送信します。
Third SMS
これで再びプレーンテキストとして表示されますが、2番目のメッセージはリンクとして表示されます。そして、それをタップすると、iOSは何もせず、メッセージアプリを開いたままにします。

結論:スキームをサポートするアプリケーションをインストールした後、必ず送信/受信SMS)してください。この場合のみ、リンクとして表示され、ユーザーはアプリケーションを開くことができます。それをタップすることによって。

注意:最初にアプリケーションがサポートされているURLスキームなしでインストールされ、次にこのサポートメッセージがプレーンテキストとして表示されたが、リンクとして表示されなかった場合も1つあります。再現できません。ただし、上記の手順で問題を解決できない場合は、次の手順を試してください。

  1. IPhoneからアプリケーションを削除します。
  2. URLスキームを変更します(または、最後の手段としてURLスキームとバンドルIDの両方を変更します)。
  3. 再度インストールしてください。
  4. 新しいURLスキームでSMSを送信します。
19
Vlad Papko

編集:

SMS本体にURLスキームを送信するアプリを試してみて、動作しました。この形式である必要がありますsmstest://my-test

SMSを受信したら、アプリをインストールし、info.plistでURLスキームを宣言する必要があります。

さまざまなURLスキームで受信したSMSのスクリーンショットを追加します。これらはすべて、iPhoneで認識されますSMS app

SMS URL SCHEMES

それでも機能しない場合は、実装してYESを返すようにしてください

application: handleOpenURL:およびapplication: openURL:sourceApplication: annotation:

- (BOOL)application:(UIApplication*)application handleOpenURL:(NSURL*)url
{
    return YES;
}

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
    return YES;
}

この古い答えは、コメントで要求したJSリダイレクトに対するものでした。

アプリがインストールされていない場合にiTunesのURLにフォールバックしてWebからアプリにリダイレクトするためにこれを使用します

var now = new Date().valueOf();
setTimeout(function () {
    if (new Date().valueOf() - now > 100) return;
    window.location = "http://iTunes.Apple.com/yourappurl";
}, 25);
window.location = "smstest://my-test";
5
jcesarmobile