Поделиться ссылкой с помощью whatsapp
Я использовал этот код для ссылки на общий доступ в приложении, но ничего не появилось в текстовом поле whatsapp. Если используется простой текст, то его работа. Может ли кто-нибудь предложить окончательный результат.
NSString *theTempMessage = @"whatsapp://send?text=https://itunes.apple.com/in/app/myapp/id1054375332?ls=1&mt=8";
NSString *theFinalMessage;
theTempMessage = [theTempMessage stringByReplacingOccurrencesOfString:@":" withString:@"%3A"];
theTempMessage = [theTempMessage stringByReplacingOccurrencesOfString:@"/" withString:@"%2F"];
theTempMessage = [theTempMessage stringByReplacingOccurrencesOfString:@"?" withString:@"%3F"];
theTempMessage = [theTempMessage stringByReplacingOccurrencesOfString:@"," withString:@"%2C"];
theTempMessage = [theTempMessage stringByReplacingOccurrencesOfString:@"=" withString:@"%3D"];
theFinalMessage = [theTempMessage stringByReplacingOccurrencesOfString:@"&" withString:@"%26"];
NSString * stringToSend=theFinalMessage;
NSURL *whatsappURL = [NSURL URLWithString:stringToSend];
if ([[UIApplication sharedApplication] canOpenURL: whatsappURL])
{
[[UIApplication sharedApplication] openURL: whatsappURL];
}
Ответы
Ответ 1
При проверке canOpenURL
отображается следующая ошибка:
не удалось найти URL: "whatsapp://" - ошибка: этому приложению не разрешено запрашивать схему whatsapp
В iOS 9 вы должны использовать белый список любых схем URL, которые ваше приложение хочет запросить в Info.plist под ключом LSApplicationQueriesSchemes (массив строк):
![введите описание изображения здесь]()
Со схемами, включенными в Info.plist, все работает по-прежнему. Когда вы связываетесь с iOS 9, вы не ограничены 50 различными схемами, вам просто нужно объявить, что вам нужно в Info.plist. Кажется, что нет ограничений на количество схем, которые вы можете включить, но я бы ожидал вопросов от группы обзора App Store, если они думают, что вы злоупотребляете механизмом.
Обратите внимание, что этот механизм применим только к canOpenURL, а не к openURL. Вам не нужно иметь схему, указанную в Info.plist, чтобы иметь возможность откройте его с помощью openURL.
NSString * msg = @"Application%20Name%20https://itunes.apple.com/in/app/myapp/id1054375332?ls=1&mt=8";
msg = [msg stringByReplacingOccurrencesOfString:@":" withString:@"%3A"];
msg = [msg stringByReplacingOccurrencesOfString:@"/" withString:@"%2F"];
msg = [msg stringByReplacingOccurrencesOfString:@"?" withString:@"%3F"];
msg = [msg stringByReplacingOccurrencesOfString:@"," withString:@"%2C"];
msg = [msg stringByReplacingOccurrencesOfString:@"=" withString:@"%3D"];
msg = [msg stringByReplacingOccurrencesOfString:@"&" withString:@"%26"];
NSString * urlWhats = [NSString stringWithFormat:@"whatsapp://send?text=%@",msg];
NSURL * whatsappURL = [NSURL URLWithString:urlWhats];
if ([[UIApplication sharedApplication] canOpenURL: whatsappURL]) {
[[UIApplication sharedApplication] openURL: whatsappURL];
} else {
UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@"WhatsApp not installed." message:@"Your device has no WhatsApp installed." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alert show];
}
Это является официальным видео WWDC 2015 для безопасности приложений.
Ответ 2
Если вы используете "[[UIApplication sharedApplication] openURL: whatsappURL];" после строковой репликации он откроет браузер Safari, а не whatsapp,
Если вы хотите открыть whatsapp, не заменяйте строку
Ответ 3
Добавьте это в свой Info.plist
<key>LSApplicationQueriesSchemes</key>
<array>
<string>whatsapp</string>
</array>
Внедрите этот код в ViewController, где вам нужно открыть WhatsApp для совместного использования. (например, например, действие кнопки)
Обновление для быстрой версии 3 (Xcode 8.x): Обновлено для устареваний:
var str = "This is the string which you want to share to WhatsApp"
str=str.addingPercentEncoding(withAllowedCharacters: (NSCharacterSet.urlQueryAllowed))!
let whatsappURL = URL(string: "whatsapp://send?text=\(str)")
if UIApplication.shared.canOpenURL(whatsappURL) {
UIApplication.shared.open(whatsappURL!, options: [:], completionHandler: nil)
} else {
showAlert(message: "Whatsapp is not installed on this device. Please install Whatsapp and try again.")
}
Здесь showAlert() - это настраиваемая функция для отображения предупреждения.