@n-ueyanagi

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

【iOS】共有シート表示のたびに表示内容が変わる

React Nativeでアプリ開発をしています。
共有シート機能をカスタマイズするために、一部のコードをSwiftで記述し、Native ModulesとしてReact Native側で呼び出しています。

共有シートを呼び出す際に「Facebook」と「X (Twitter)」アプリを除外するようにしています。
共有シートの初回呼び出し時はちゃんと両アプリとも除外されているのに、一度共有シートを閉じて再度開くと両アプリとも共有シート内に表示されてしまいます。

その後も共有シートの開く・閉じるを繰り返しても、除外対象のアプリが表示されたりされなかったりしています。

以下のコードのどこが原因で、そのような現象が起きているのでしょうか?

@objc(NativeModuleShare)
class NativeModuleShare: NSObject, RCTBridgeModule {
  static func moduleName() -> String!{
    return "NativeModuleShare";
  }

  static func requiresMainQueueSetup () -> Bool {
    return true;
  }

  @objc
  func ShowShareSheet(_ title:String, message:String, url:String)->Void {

    let itemSource = ShareActivityItemSource(shareImage: UIImage(named: "logoBgWhite")!, shareText: message, shareTitle: title, shareUrl: url)

let activityVC = UIActivityViewController(activityItems: [itemSource, itemSource.shareText],
                                              applicationActivities: nil)

    let excludeActivityTypes = [
      UIActivity.ActivityType.postToTwitter,
      UIActivity.ActivityType.postToFacebook
    ]
    activityVC.excludedActivityTypes = excludeActivityTypes;

    DispatchQueue.main.async {
      (UIApplication.shared.delegate as? AppDelegate)?.window.rootViewController?.present(activityVC, animated: true, completion: nil);
    }
  }
}

よろしくお願いいたします。

0 likes

1Answer

上のコードには「閉じる」処理がありませんが、呼び出し側で 閉じている のでしょうか?
そのコードを見せてください。

0Like

Comments

  1. @n-ueyanagi

    Questioner

    特に閉じる際に追加でイベントや処理が不要だったため、閉じる処理については何も記述していません。

    お恥ずかしながら、UIActivityViewContorllerで共有シートを表示させる方法についていろいろググったりしてなんとか実装した次第なので、、、OSが提供しているデフォルトの「閉じる」処理で十分な場合は特に何も書かなくていい認識でした、、

    閉じる際に何か明示的にインスタンスを破棄する処理などが必要なんでしょうか?

  2. 閉じる際に何か明示的にインスタンスを破棄する処理などが必要なんでしょうか?

    最初は問題が無くて、二度目以降が問題とのことなので、閉じるときに何かあるのかと思った次第です。

    自分はReact Nativeの経験が無いので、これ以上は分かりません。お役に立てずすみません。

  3. @n-ueyanagi

    Questioner

    とんでもないです。
    まったく考えもしてなかったので、、、一度、追ってみようと思います。
    ありがとうございます。

Your answer might help someone💌