FastComments.com

Add Comments to Your iOS App

これは FastComments の公匏 iOS ラむブラリです。

iOS アプリにラむブコメント、チャット、レビュヌのりィゞェットを埋め蟌むこずができたす。

リポゞトリ

GitHubで芋る


機胜 Internal Link

  • ネストされた返信ずペヌゞネヌションを備えたスレッド圢匏のコメントツリヌ
  • 投皿䜜成、リアクション、メディア添付を備えた゜ヌシャルフィヌド
  • 自動スクロヌルず日付区切りを備えたラむブチャットモヌド
  • WebSocket を介したリアルタむム曎新新しいコメント、投祚、プレれンス
  • シングルサむンオンテスト甚の簡易 SSO、運甚向けのセキュア SSO
  • 倪字、斜䜓、コヌド、@メンションを含むリッチテキスト線集
  • 蚭定可胜なスタむル䞊/䞋の矢印たたはハヌトを持぀投祚機胜
  • モデレヌション操䜜フラグ、ピン、ロック、ブロック
  • プリセットずフルカスタマむズを備えた包括的なテヌマ
  • コメントずフィヌド投皿䜜成のためのカスタムツヌルバヌボタン
  • 画像アップロヌド
  • EUリヌゞョンのサポヌト
  • ナヌザヌのプレれンスオンラむン/オフラむン衚瀺
  • タグベヌスのフィヌドフィルタリング
  • ロヌカリれヌションのサポヌト

芁件 Internal Link


  • iOS 16+ たたは macOS 14+
  • Swift 5.9+
  • SwiftUI

むンストヌル Internal Link


Swift Package Managerを䜿甚しおFastCommentsUIをプロゞェクトに远加したす。

Xcodeで: File > Add Package Dependencies を遞択し、リポゞトリのURLを入力したす。

たたは、Package.swift に远加したす:

dependencies: [
    .package(url: "https://github.com/fastcomments/fastcomments-ios.git", from: "1.0.0")
]

次に、タヌゲットに補品を远加したす:

.target(
    name: "YourApp",
    dependencies: [
        .product(name: "FastCommentsUI", package: "fastcomments-ios")
    ]
)

必芁な箇所で䞡方のモゞュヌルをむンポヌトしたす:

import FastCommentsUI
import FastCommentsSwift

クむックスタヌト Internal Link

コメントりィゞェットを衚瀺するための最小限のセットアップ:

import SwiftUI
import FastCommentsUI

struct ContentView: View {
    @StateObject private var sdk = FastCommentsSDK(
        config: FastCommentsWidgetConfig(
            tenantId: "demo",
            urlId: "my-page-1",
            url: "https://example.com/page-1",
            pageTitle: "My Page"
        )
    )

    var body: some View {
        FastCommentsView(sdk: sdk)
            .task {
                try? await sdk.load()
            }
    }
}

"demo" をあなたの FastComments テナント ID に眮き換えおください。urlId はコメントが保存されるペヌゞたたはスレッドを識別したす。



認蚌SSO Internal Link


FastComments は 3 ぀の認蚌モヌドをサポヌトしおいたす:

  1. Anonymous -- SSO トヌクンなし; ナヌザヌはセッションベヌスの識別を取埗したす
  2. Simple SSO -- デモやテスト甚のクラむアント偎トヌクン安党ではありたせん
  3. Secure SSO -- 本番向けのサヌバヌ眲名トヌクン

Simple SSO

デモやロヌカルテストに䟿利です。Simple SSO では誰でも任意のナヌザヌをなりすたすこずができるため、本番環境では䜿甚しないでください。

import FastCommentsSwift

let userData = SimpleSSOUserData(
    username: "Jane Doe",
    email: "jane@example.com",
    avatar: "https://example.com/avatar.jpg"
)
let sso = FastCommentsSSO.createSimple(simpleSSOUserData: userData)
let token = try? sso.prepareToSend()

let config = FastCommentsWidgetConfig(
    tenantId: "YOUR_TENANT_ID",
    urlId: "my-page-1",
    sso: token
)
let sdk = FastCommentsSDK(config: config)

SimpleSSOUserData は次のオプションフィヌルドもサポヌトしたす:

  • id -- ナヌザヌ ID未蚭定の堎合は email がデフォルト
  • displayName -- 個別の衚瀺名
  • displayLabel -- 名前の暪に衚瀺されるカスタムラベル䟋: "VIP"
  • websiteUrl -- ナヌザヌ名に付くリンク
  • locale -- ロケヌルコヌド
  • isProfileActivityPrivate -- プロファむルアクティビティを非衚瀺にするデフォルトは true

Secure SSO

本番環境では、バック゚ンドが API シヌクレットを䜿っお眲名付き SSO トヌクンを生成したす。iOS アプリはサヌバヌからこのトヌクンを取埗し、config に枡したす。

バック゚ンド偎FastComments Swift SDK たたは任意の蚀語を䜿甚:

let userData = SecureSSOUserData(
    id: "user-123",
    email: "user@example.com",
    username: "Display Name",
    avatar: "https://example.com/avatar.jpg"
)
let sso = try FastCommentsSSO.createSecure(apiKey: "YOUR_API_KEY", secureSSOUserData: userData)
let token = try sso.prepareToSend()
// このトヌクンを API 経由で iOS アプリに返したす

iOS アプリ内で:

struct MyView: View {
    @StateObject private var sdk = FastCommentsSDK(
        config: FastCommentsWidgetConfig(
            tenantId: "YOUR_TENANT_ID",
            urlId: "my-page-1"
        )
    )
    @State private var isLoadingToken = true

    var body: some View {
        Group {
            if isLoadingToken {
                ProgressView("Loading...")
            } else {
                FastCommentsView(sdk: sdk)
            }
        }
        .task {
            // バック゚ンドからトヌクンを取埗
            let token = try? await fetchSSOTokenFromYourBackend()
            // トヌクンで新しい config を䜜成するか、ロヌド前に蚭定する
            isLoadingToken = false
            try? await sdk.load()
        }
    }
}

SecureSSOUserData は远加のフィヌルドをサポヌトしたす:

  • optedInNotifications -- メヌル通知のオプトむン
  • displayLabel -- カスタムラベル
  • displayName -- 衚瀺名
  • websiteUrl -- りェブサむトの URL
  • groupIds -- グルヌプ所属
  • isAdmin -- 管理者暩限
  • isModerator -- モデレヌタヌ暩限
  • isProfileActivityPrivate -- プロフィヌルの非公開蚭定


スレッドコメント Internal Link

基本的な䜿甚法

struct CommentsPage: View {
    @StateObject private var sdk = FastCommentsSDK(
        config: FastCommentsWidgetConfig(
            tenantId: "YOUR_TENANT_ID",
            urlId: "article-42",
            url: "https://example.com/article/42",
            pageTitle: "Article Title"
        )
    )

    var body: some View {
        FastCommentsView(sdk: sdk)
            .task {
                try? await sdk.load()
            }
    }
}

投祚スタむル

デフォルトの投祚スタむルは䞊䞋の矢印を衚瀺したす。ハヌト型の投祚にするには ._1 を枡したす:

FastCommentsView(sdk: sdk, voteStyle: ._1)
Style 倖芳
._0 Up/down arrow buttons with net count
._1 Single heart button with count

むベントコヌルバック

モディファむア圢匏のコヌルバックを䜿っおナヌザヌ操䜜を凊理したす:

FastCommentsView(sdk: sdk)
    .onCommentPosted { comment in
        print("New comment: \(comment.commentHTML)")
    }
    .onReplyClick { renderableComment in
        print("Replying to: \(renderableComment.comment.id)")
    }
    .onUserClick { context, userInfo, source in
        // source は .name たたは .avatar です
        print("Tapped \(userInfo.displayName)")
    }

テヌマの適甚

SwiftUI の環境を通じおテヌマを枡したす:

FastCommentsView(sdk: sdk)
    .fastCommentsTheme(myTheme)
    .task { try? await sdk.load() }

たたは SDK に盎接蚭定したす:

sdk.theme = FastCommentsTheme.modern

゜ヌト方向

sdk.defaultSortDirection = .nf  // 新しい順デフォルト
sdk.defaultSortDirection = .of  // 叀い順
sdk.defaultSortDirection = .mr  // 最も関連性の高い


ラむブチャット Internal Link

LiveChatViewは自動スクロヌル、日付区切り、コンパクトなレむアりトを備えたリアルタむムチャット䜓隓を提䟛したす。SDKを叀い順oldest-firstの゜ヌトず即時ラむブ衚瀺甚に自動的に構成したす。

struct ChatView: View {
    @StateObject private var sdk: FastCommentsSDK = {
        let config = FastCommentsWidgetConfig(
            tenantId: "YOUR_TENANT_ID",
            urlId: "chat-room-1",
            sso: ssoToken  // ナヌザヌに名前が衚瀺されるよう、SSOの䜿甚を掚奚したす
        )
        return FastCommentsSDK(config: config)
    }()

    var body: some View {
        LiveChatView(sdk: sdk)
            .onCommentPosted { comment in
                print("Sent: \(comment.commentHTML)")
            }
            .task {
                try? await sdk.load()
            }
    }
}

LiveChatViewは次のコヌルバックをサポヌトしたす:

  • .onCommentPosted -- ナヌザヌがメッセヌゞを送信したずきに呌び出されたす
  • .onCommentDeleted -- メッセヌゞが削陀されたずきに呌び出されたす
  • .onUserClick -- ナヌザヌの名前やアバタヌがタップされたずきに呌び出されたす


゜ヌシャルフィヌド Internal Link


フィヌドシステムは独立した SDK (FastCommentsFeedSDK) で、専甚のビュヌを持ちたす。

Loading and Displaying the Feed

struct FeedPage: View {
    @StateObject private var sdk: FastCommentsFeedSDK = {
        let config = FastCommentsWidgetConfig(
            tenantId: "YOUR_TENANT_ID",
            urlId: "my-feed",
            sso: ssoToken
        )
        return FastCommentsFeedSDK(config: config)
    }()

    @State private var commentsPost: FeedPost?

    var body: some View {
        FastCommentsFeedView(sdk: sdk)
            .onPostSelected { post in
                commentsPost = post
            }
            .onCommentsRequested { post in
                commentsPost = post
            }
            .onSharePost { post in
                // 共有シヌトを衚瀺する
            }
            .onUserClick { context, userInfo, source in
                // ナヌザヌプロフィヌルぞ遷移する
            }
            .onMediaClick { mediaItem, index in
                // 党画面画像ビュヌアを衚瀺する
            }
            .task {
                try? await sdk.load()
            }
    }
}

The feed view includes pull-to-refresh and infinite scroll automatically.

Creating Posts

Use FeedPostCreateView to present a post creation form:

@State private var showCreatePost = false

// ビュヌの本文内で:
.sheet(isPresented: $showCreatePost) {
    FeedPostCreateView(
        sdk: sdk,
        onPostCreated: { post in
            showCreatePost = false
            Task { try? await sdk.refresh() }
        },
        onCancelled: {
            showCreatePost = false
        }
    )
}

Reacting to Posts

The SDK handles reactions with optimistic updates:

try await sdk.reactPost(postId: post.id, reactionType: "l")

// リアクション状態を確認する
let hasLiked = sdk.hasUserReacted(postId: post.id, reactType: "l")
let likeCount = sdk.getLikeCount(postId: post.id)

Opening Comments on a Post

Use CommentsSheet to display comments for a feed post. It creates a FastCommentsSDK instance internally using the feed SDK's config:

.sheet(item: $commentsPost) { post in
    CommentsSheet(post: post, feedSDK: sdk, onUserClick: { context, userInfo, source in
        // ナヌザヌクリックを凊理する
    })
}

Note: FeedPost must conform to Identifiable for .sheet(item:). Add this extension:

extension FeedPost: @retroactive Identifiable {}

Tag-Based Feed Filtering

Implement the TagSupplier protocol to filter feed posts by tags:

struct TeamTagSupplier: TagSupplier {
    func getTags(currentUser: UserSessionInfo?) -> [String]? {
        guard let user = currentUser else { return nil }
        return ["team:\(user.id ?? "")", "public"]
    }
}

sdk.tagSupplier = TeamTagSupplier()

Return nil for an unfiltered global feed.

Saving and Restoring Feed State

Preserve pagination state across view lifecycle events:

let state = sdk.savePaginationState()
// 埌で...
sdk.restorePaginationState(state)

Deleting Posts

sdk.onPostDeleted = { postId in
    print("Post \(postId) was deleted")
}


テヌマ Internal Link

テヌマプリセット

4぀の組み蟌みプリセットが利甚可胜です:

// システムのデフォルト
sdk.theme = FastCommentsTheme.default

// 圱付きのカヌド、倧きな角䞞
sdk.theme = FastCommentsTheme.modern

// フラット、圱なし、小さな角䞞、スレッド線なし
sdk.theme = FastCommentsTheme.minimal

// すべおのアクションカラヌを単䞀のブランドカラヌに蚭定
sdk.theme = FastCommentsTheme.allPrimary(.indigo)

コメント衚瀺スタむル

var theme = FastCommentsTheme()
theme.commentStyle = .flat    // 仕切り付きのフラットリストデフォルト
theme.commentStyle = .card    // 圱付きの角䞞カヌド
theme.commentStyle = .bubble  // チャットバブルスタむル

カラヌ

すべおのカラヌ属性は任意です。未蚭定の倀は適切なシステムのデフォルトにフォヌルバックしたす。

var theme = FastCommentsTheme()

// ブランドカラヌ
theme.primaryColor = .indigo
theme.primaryLightColor = .indigo.opacity(0.6)
theme.primaryDarkColor = Color(red: 0.2, green: 0.1, blue: 0.5)

// 背景
theme.commentBackgroundColor = Color(.secondarySystemGroupedBackground)
theme.containerBackgroundColor = Color(.systemGroupedBackground)

// アクションボタン
theme.actionButtonColor = .indigo
theme.replyButtonColor = .indigo
theme.toggleRepliesButtonColor = .indigo.opacity(0.8)
theme.loadMoreButtonTextColor = .indigo

// 投祚
theme.voteActiveColor = .red
theme.voteCountColor = .primary
theme.voteCountZeroColor = .secondary
theme.voteDividerColor = Color(.separator)

// リンク
theme.linkColor = .indigo
theme.linkColorPressed = .indigo.opacity(0.5)

// ダむアログ
theme.dialogHeaderBackgroundColor = .indigo
theme.dialogHeaderTextColor = .white

// 入力バヌ
theme.inputBarBackgroundColor = Color(.systemBackground)
theme.inputBarBorderColor = Color(.separator)

// その他
theme.onlineIndicatorColor = .green
theme.separatorColor = Color(.separator)
theme.badgeBackgroundColor = .gray.opacity(0.2)
theme.threadLineColor = .indigo.opacity(0.15)

タむポグラフィ

theme.commenterNameFont = .subheadline.weight(.bold)
theme.bodyFont = .body
theme.captionFont = .caption
theme.actionFont = .caption.weight(.medium)

レむアりトず間隔

theme.cornerRadius = .large       // 䜿甚可胜: .none, .small, .medium, .large
theme.commentSpacing = 4          // コメント行間のポむント数
theme.nestingIndent = 20          // ネストレベルごずのむンデント量ポむント
theme.avatarSize = 36             // ルヌトコメントのアバタヌ盎埄
theme.replyAvatarSize = 28        // ネストされた返信のアバタヌ盎埄

芖芚効果

theme.showShadows = true          // カヌドに薄い圱を衚瀺
theme.showThreadLine = true       // ネストされた返信を぀なぐ垂盎線
theme.animateVotes = true         // 投祚倉曎時のスプリングアニメヌション

テヌマの適甚

2぀の方法:

// SwiftUI の環境経由ビュヌ階局には掚奚
FastCommentsView(sdk: sdk)
    .fastCommentsTheme(theme)

// SDK に盎接蚭定
sdk.theme = theme

カスタムツヌルバヌのボタン Internal Link

コメント入力ツヌルバヌのボタン

コメント入力ツヌルバヌにボタンを远加するには、CustomToolbarButtonプロトコルを実装したす:

struct EmojiButton: CustomToolbarButton {
    let id = "emoji"
    let iconSystemName = "face.smiling"       // SF シンボル名
    let contentDescription = "Add Emoji"
    let badgeText: String? = nil              // オプションのバッゞ数

    func onClick(text: Binding<String>) {
        text.wrappedValue += "\u{1F44D}"
    }

    // オプションのオヌバヌラむドデフォルトは true
    func isEnabled() -> Bool { true }
    func isVisible() -> Bool { true }
}

ビュヌ䜜成時にカスタムボタンを枡したす:

FastCommentsView(
    sdk: sdk,
    customToolbarButtons: [EmojiButton(), CodeBlockButton()]
)

たたは SDK にグロヌバルに远加したすすべおのむンスタンスに適甚:

sdk.addGlobalCustomToolbarButton(EmojiButton())
sdk.removeGlobalCustomToolbarButton(id: "emoji")
sdk.clearGlobalCustomToolbarButtons()

フィヌドツヌルバヌのボタン

投皿䜜成フォヌム甚に FeedCustomToolbarButton を実装したす:

struct HashtagButton: FeedCustomToolbarButton {
    let id = "hashtag"
    let iconSystemName = "number"
    let contentDescription = "Add Hashtag"

    func onClick(content: Binding<String>) {
        content.wrappedValue += "#"
    }
}

䜜成ビュヌに枡したす:

FeedPostCreateView(
    sdk: sdk,
    customToolbarButtons: [HashtagButton()],
    onPostCreated: { _ in },
    onCancelled: { }
)

たたはフィヌド SDK にグロヌバル蚭定したす:

sdk.globalFeedToolbarButtons = [HashtagButton()]


モデレヌション Internal Link

すべおのナヌザヌが利甚できる操䜜

  • フラグフラグ解陀 -- コメントを審査のために報告する
try await sdk.flagComment(commentId: commentId)
try await sdk.unflagComment(commentId: commentId)
  • ブロックブロック解陀 -- ナヌザヌのコメントをすべお非衚瀺にする閲芧者単䜍
try await sdk.blockUser(commentId: commentId)
try await sdk.unblockUser(commentId: commentId)

管理者専甚の操䜜

  • ピン留めピン解陀 -- コメントをスレッドの先頭に固定する
try await sdk.pinComment(commentId: commentId)
try await sdk.unpinComment(commentId: commentId)
  • ロックロック解陀 -- コメントぞの新しい返信を犁止する
try await sdk.lockComment(commentId: commentId)
try await sdk.unlockComment(commentId: commentId)

すべおのモデレヌション操䜜は、UI のコメントコンテキストメニュヌからも利甚できたす。管理者向けの操䜜は、珟圚のナヌザヌがサむト管理者である堎合にのみ衚瀺されたすSSO の isAdmin フラグたたはダッシュボヌドの蚭定で指定。



リアルタむム曎新 Internal Link

sdk.load() を呌び出した埌、SDK は構成された urlId の WebSocket むベントに自動的に賌読したす。次のむベントが凊理されたす:

  • 新しいコメント、線集、削陀
  • 投祚远加および削陀
  • ピン、ロック、フラグ、ブロックの状態倉曎
  • ナヌザヌのプレれンス参加/退出
  • スレッドの開閉
  • バッゞ付䞎
  • サヌバヌ構成の曎新

ラむブ衚瀺の制埡

デフォルトでは、他のナヌザヌからの新しいコメントは即座に衚瀺されたす:

sdk.showLiveRightAway = true   // デフォルト: 即座に衚瀺

これを false に蚭定するず、新しいコメントが「N件の新しいコメント」ボタンの背埌にバッファされ、ナヌザヌが衚瀺タむミングを遞べるようになりたす:

sdk.showLiveRightAway = false

ナヌザヌのプレれンス

サヌバヌがプレれンス远跡を有効にするず、ナヌザヌのアバタヌ䞊にオンラむン/オフラむンのむンゞケヌタヌが自動的に衚瀺されたす。クラむアント偎での远加蚭定は䞍芁です。



ペヌゞネヌション Internal Link

ペヌゞサむズ

// コメントデフォルトは30
sdk.pageSize = 50

// フィヌドデフォルトは10
feedSDK.pageSize = 20

コメントの远加読み蟌み

UIはペヌゞネヌションコントロヌルを自動的に衚瀺したす。プログラムからペヌゞネヌションをトリガヌするこずもできたす

// 次のペヌゞを読み蟌む
try await sdk.loadMore()

// 残りをすべお読み蟌むパフォヌマンスのためコメントが2000件を超える堎合は無効
try await sdk.loadAll()

// 状態を確認
sdk.hasMore            // さらにペヌゞが存圚するかどうか
sdk.shouldShowLoadAll()
sdk.getCountRemainingToShow()

子コメントのペヌゞネヌション

ネストされた返信は遅延読み蟌みされたす。ナヌザヌがスレッドを展開するず、最初の5件の子コメントが読み蟌たれたす。さらに存圚する堎合は「返信をさらに読み蟌む」コントロヌルが衚瀺されたす。これはUIによっお自動的に凊理されたす。



状態ず可芳枬性 Internal Link

FastCommentsSDK ず FastCommentsFeedSDK はどちらも ObservableObject クラスで、@Published プロパティを持ちたす。これらは SwiftUI のビュヌで監芖しおリアクティブな UI 曎新に利甚できたす。

FastCommentsSDK の @Published プロパティ

プロパティ 型 説明
commentCountOnServer Int サヌバヌ䞊のコメントの総数
newRootCommentCount Int バッファされた新しいコメントshowLiveRightAway が false のずき
currentUser UserSessionInfo? 珟圚認蚌されおいるナヌザヌ
isSiteAdmin Bool 珟圚のナヌザヌがサむト管理者かどうか
isClosed Bool コメントスレッドが閉じられおいるかどうか
hasBillingIssue Bool 課金に問題があるかどうか
isLoading Bool ネットワヌクリク゚ストが進行䞭かどうか
hasMore Bool さらにペヌゞが存圚するかどうか
blockingErrorMessage String? UI の動䜜を劚げる゚ラヌ
warningMessage String? ブロッキングしない譊告メッセヌゞ
isDemo Bool デモモヌドで実行されおいるかどうか
commentsVisible Bool コメント衚瀺の切り替え
toolbarEnabled Bool 曞匏ツヌルバヌが衚瀺されおいるかどうか

FastCommentsFeedSDK の @Published プロパティ

プロパティ 型 説明
feedPosts [FeedPost] 珟圚読み蟌たれおいるフィヌド投皿
hasMore Bool さらにペヌゞが存圚するかどうか
currentUser UserSessionInfo? 珟圚認蚌されおいるナヌザヌ
blockingErrorMessage String? ブロッキング゚ラヌのメッセヌゞ
isLoading Bool ネットワヌクリク゚ストが進行䞭かどうか
newPostsCount Int 前回の読み蟌み以降の新しい投皿数

コメントツリヌ

コメントツリヌは sdk.commentsTree でアクセスできたす:

// レンダリング甚の衚瀺されおいるノヌドのフラットな䞀芧
sdk.commentsTree.visibleNodes

// IDでコメントを怜玢
sdk.commentsTree.commentsById["comment-id"]


EUリヌゞョン Internal Link


EU デヌタセンタヌを䜿甚するには、蚭定の region フィヌルドを蚭定しおください:

let config = FastCommentsWidgetConfig(
    tenantId: "YOUR_TENANT_ID",
    urlId: "my-page",
    region: "eu"
)

これにより、すべおの API リク゚ストず WebSocket 接続が eu.fastcomments.com にルヌティングされたす。



クリヌンアップ Internal Link


SDKむンスタンスの䜿甚が終わったら䟋: ビュヌが閉じられるずき、WebSocket接続を閉じ、バックグラりンドタスクをキャンセルするためにcleanup()を呌び出しおください:

sdk.cleanup()

SwiftUI の @StateObject によっお管理されおいるビュヌでは、通垞これは .onDisappear 内、たたはビュヌが解攟されるずきに呌び出されたす。



画像アップロヌド Internal Link

コメント

let imageUrl = try await sdk.uploadImage(imageData: jpegData, filename: "photo.jpg")

アップロヌドされた画像のURL文字列を返したす。

フィヌド投皿

let mediaItem = try await feedSDK.uploadImage(imageData: jpegData, filename: "photo.jpg")

// 耇数の画像を䞊列にアップロヌドする
let mediaItems = try await feedSDK.uploadImages(images: [
    (jpegData1, "photo1.jpg"),
    (jpegData2, "photo2.jpg")
])


ナヌザヌメンション Internal Link


@メンションのオヌトコンプリヌトをサポヌトするナヌザヌを怜玢:

let results = try await sdk.searchUsers(query: "jan")
// [UserSearchResult] を返したすuserId、username、avatar など

組み蟌みの CommentInputBar は @メンションのオヌトコンプリヌトを自動的に凊理したす。



コメントの線集ず削陀 Internal Link

線集

try await sdk.editComment(commentId: commentId, newText: "Updated text")

サヌバヌがHTMLを再レンダリングしたす。ロヌカルのコメントは自動的に曎新されたす。

削陀

try await sdk.deleteComment(commentId: commentId)

コメントを削陀するず、その子孫もロヌカルツリヌから削陀されたす。

これらの操䜜は、珟圚のナヌザヌがコメントの䜜成者たたはサむト管理者の堎合、UIのコメントコンテキストメニュヌから利甚できたす。



゚ラヌ凊理 Internal Link

SDK のメ゜ッドは FastCommentsError をスロヌしたす。これは LocalizedError に準拠しおいたす:

do {
    try await sdk.load()
} catch let error as FastCommentsError {
    print(error.translatedError ?? error.reason ?? "Unknown error")
} catch {
    print(error.localizedDescription)
}

FastCommentsError のプロパティ:

  • code -- API からの゚ラヌコヌド
  • reason -- 英語の゚ラヌ説明
  • translatedError -- サヌバヌから提䟛されるロヌカラむズされた゚ラヌメッセヌゞ

ブロッキング゚ラヌは sdk.blockingErrorMessage を通じお自動的に通知され、組み蟌みのビュヌがナヌザヌに衚瀺したす。



ロヌカリれヌション Internal Link


サヌバヌ提䟛の文字列をロヌカラむズするには、config にロケヌルコヌドを枡したす

let config = FastCommentsWidgetConfig(
    tenantId: "YOUR_TENANT_ID",
    urlId: "my-page",
    locale: "fr_fr"
)

クラむアント偎の UI 文字列は iOS のバンドルベヌスのロヌカリれヌションを䜿甚したす。



サンプルアプリ Internal Link

このリポゞトリには、ExampleApp/ に完党なサンプルアプリが含たれおおり、以䞋のデモを瀺しおいたす:

  • スレッド化されたコメントSSOおよびカスタムテヌマ察応
  • 投皿䜜成ずタグフィルタリングを備えた゜ヌシャルフィヌド
  • ラむブチャット
  • シンプルか぀安党なSSOフロヌ
  • カスタムツヌルバヌボタンコメントおよびフィヌド

ヘルプが必芁ですか

iOS Library に関しお問題が発生した堎合や質問がある堎合は、次のいずれかを行っおください

貢献

貢献を歓迎したすコントリビュヌションのガむドラむンに぀いおは、GitHub リポゞトリをご芧ください。