2

私はABPeoplePickerNavigationControllerアドレス帳のユーザーを表示するために 使用しshouldContinueAfterSelectingPersonており、ユーザーの電話番号と電子メールを表示するために YE を返します。
しかし、電話やメールをタップしても何も起こらず、SMS やメールを送信したいのです。
これは私が自分で実装する必要があるものですか?

私も YES を返しshouldContinueAfterSelectingPersonます。

4

2 に答える 2

5

申し訳ありませんが、あなたの前にはたくさんの仕事があります。まず、ユーザーが連絡先を選択したら、自分で電話またはメールを抽出する必要があります。複数の電話番号または電子メール アドレスがある場合は、UIActionSheet またはテーブルを使用して、どれを使用するかをユーザーに確認する必要があります。電話番号を使用して、電話の URL を作成し、それを共有アプリケーションに送信して、電話をかけることができます (その方法については、ここにたくさんの例があります)。

電子メール アドレスを使用する場合、MFMailComposeViewController を使用して電子メールを作成する必要があります。次に、デリゲートを通じてユーザーの既知のアドレスを 1 つ追加します。SMS メッセージを送信するための姉妹クラスである MFMessageComposeViewController もあります。

私は自分の会社でこれとまったく同じことを行いましたが、すべてをコーディングしてテストするのに約 3 日かかりました (3 つのオプションすべて)。

編集: 人は複数の電話番号と電子メール アドレスを持つことができます。ここには 2 つの選択肢があります。

  • 既に使用しているデリゲート メソッドを使用し、NO を返しますが、ユーザーがタップした「プロパティ」と「識別子」を保存します。それは電話番号、電子メール アドレスなどになります (アドレスの可能性もあるため、さらに詳しく調べる必要があります。これら 2 つの値を使用して正確なプロパティを取得する方法の例は、ここまたは他の場所で見つけることができます。

  • 「peoplePickerNavigationController:shouldContinueAfterSelectingPerson:」を使用して、ユーザーの属性をユーザーに表示せずに、そのユーザーが連絡を取りたいと考えているユーザーであることを示すことができます。その人物の記録を使用して、その人物が持っている電子メール アドレスの数を確認できます。それが 1 つしかない場合、作業は完了です。そうでない場合は、その人にどちらかを教えてもらう必要があります。【私はこうしました】

于 2012-09-02T17:38:51.023 に答える
1

David H が彼の答えで言ったことに同意します。あなたにはたくさんの仕事があります。少しでもお役に立てるように、SMS の送信方法を説明します

また、アドレス帳のレコードから電話番号を取得する方法を示す小さなコード スニペットを次に示します。

ABAddressBookRef addressBook = ABAddressBookCreate();
ABRecordRef record = ABPersonCreate();
ABMutableMultiValueRef multi;
record = ABAddressBookGetPersonWithRecordID(addressBook, contactID);
multi = ABRecordCopyValue(record, kABPersonPhoneProperty);
int multiCount = ABMultiValueGetCount(multi);
for(CFIndex i=0; i<multiCount; i++)
{
    [tempArrayPhones addObject:[NSString stringWithFormat:@"%@", (NSString *)ABMultiValueCopyValueAtIndex(multi, i)]];
}

繰り返しますが、これは完全なコードではなく、アイデアを提供するための単なるスニペットです。

于 2012-09-02T20:15:09.100 に答える