Поделиться ссылкой с помощью 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() - это настраиваемая функция для отображения предупреждения.