问题
I declared an url scheme in my app, smstest
so in Safari I can write in the search bar smstest:my-test
or smstest://my-test
and my app is open.
I'm trying to achieve the same from a SMS text so the Messages app would format smstest:my-test
or smstest://my-test
as a link and the user could tap it and my app being called. But the text is not formatted as a link.
Is it possible or the only solution to open an app from a SMS is to point to an Internet page with a script?
Thank you.
EDIT: funny thing, I have installed IMO Messenger and I receive a SMS with a code as an URL scheme, and that is parsed by Messages app as a link. Why does not happens with my app? I tried with several messages, with spaces before and after the url and nothing happens.
回答1:
In general there is standard way to open application from Messages app by using url scheme:
- Add url scheme to info.plist file: my-scheme.
- Install application to the target iPhone.
- Send SMS with text like this: "my-scheme://it-is-my-scheme.
And everything works well. But it is possible one interesting case when it doesn't work and you think that source code is wrong. But it isn't so. Let's try to investigate this case:
Before adding url scheme and installing application send SMS. As it expected message will be displayed as plain text:
Now lets add url scheme to info.plist:
Finally install application and send/receive the same SMS:
As you see last message is displayed like link and if I tap on it then iOS opens my application. But the first message is still displayed as plain text and it isn't tappable. It seems that the logic of Messages app is implemented in such manner.
Now lets delete application from iPhone and send the same SMS one more time:
Now it again displayed as plain text but the second message - as link. And if I tap on it iOS does nothing and leaves Messages app opened.
Conclusion: Be sure that you send/receive SMS after installing application that supports your scheme. Only in this case it will be displayed as link and user can open your application by tapping on it.
Notice: I also catch one case when at the beginning application was installed without supported url schemes and then when I add this support message has been displayed as plain text but not as link. I can't reproduce it. But if above steps won't help to resolve your issue try:
- Remove application from iPhone;
- Change url scheme (or even change both: url scheme and bundle id as a last resort);
- Install it again;
- Send SMS with new url scheme.
回答2:
EDIT:
I have just tried with an app sending my url scheme on the sms body and worked.
It must have this format smstest://my-test
The app have to be installed and with the url scheme declared on the info.plist when you receive the sms to work.
I add the screenshot of an SMS received with different url schemes, all of them recognized by the iPhone SMS app
If it still doesn't work, try implementing and make them return YES
application: handleOpenURL:
and 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;
}
This old answer was for the JS redirection you asked for on the comments.
I use this for redirecting from web to app with fallback to the itunes url in case the app isn't installed
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";
来源:https://stackoverflow.com/questions/23010915/open-app-from-sms-with-my-url-scheme-as-a-link