web-dev-qa-db-ja.com

whatsappを使用してリンクを共有する

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];
}
18

次のエラーはcanOpenURLをチェックするときに表示されます

uRLの失敗: "whatsapp://"-エラー:このアプリはスキームwhatsappのクエリを実行できません

IOS 9では、アプリがクエリしたいURLスキームを、LSApplicationQueriesSchemesキー(文字列の配列)の下のInfo.plistでホワイトリストに登録する必要があります。

enter image description here

Info.plistに含まれるスキームでは、すべてが以前と同様に機能します。 iOS 9に対してリンクする場合、50の異なるスキームに限定されず、Info.plistで必要なものを宣言するだけで済みます。含めることができるスキームの数に制限はないようですが、メカニズムを悪用していると思われる場合は、App Storeレビューチームからの質問を期待します。

このメカニズムはcanOpenURLにのみ適用され、openURLには適用されないことに注意してください。 openURLでスキームを開くために、Info.plistにスキーマをリストする必要はありません。

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の公式ビデオです。

45
Nimit Parekh

これをInfo.plistに追加します

<key>LSApplicationQueriesSchemes</key>
    <array>
        <string>whatsapp</string>
    </array>

共有のためにWhatsAppを開く必要があるViewControllerにこのコードを実装します。 (たとえば、ボタンのアクションのように)Swift 3 version(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()はアラートを表示するためのカスタム関数です。

9

"[[UIApplication sharedApplication] openURL:whatsappURL];"を使用すると、文字列の置換後にwhatsappではなくSafariブラウザが開きます。

Whatsappを開きたい場合は、文字列を置き換えないでください

1
satheesh