Mac OS高级功能

开启记录

为了帮助调试应用程序,您可以打开Branch日志记录,该日志记录到控制台。请记住在生产应用程序中将其关闭。

属性

Branch.loggingEnabled

设置用户身份

通常,您可能拥有自己的用户ID,或者希望引用和事件数据在各个平台之间保持不变或进行卸载/重新安装。如果你知道你的用户从不同的设备访问服务很有帮助。这里我们介绍'用户身份'的概念。

方法

[Branch setUserIdentity:completion:]

参见 setUserIdentity:completion: Branch(im)setUserIdentity:completion :)

登出

如果您在应用程序中提供注销功能,请确保在注销完成后清除用户。这将确保清除所有
存储的参数,并将所有事件正确地归属于正确的标识。

警告 :此呼叫将清除设备上的归属。

方法

[Branch logoutWithCompletion:]

参见 logoutWithCompletion: Branch(im)logoutWithCompletion :)

跟踪用户动作和事件

使用BranchEvent 类来跟踪用户的特殊行为或超出应用安装应用程序的特定事件,开路和
共享。您可以跟踪这样当用户添加一个项目到一个在线购物车,或者搜索关键字,作为中间事件
人。

BranchEvent 接口提供了一个接口,用于添加BranchUniversalObject表示的内容,以便将
应用程序内容与事件相关联。

关于你的应用分析'小号BranchEvents可以在仪表盘处发现,并BranchEvents还提供严密的
与很多第三方分析服务提供商整合。

BranchEvent 类可以很容易使用。例如:

Branch.sharedInstance.logEvent(BranchEvent.standardEvent(.addToCart))
[[Branch sharedInstance]
    logEvent:[BranchEvent standardEvent:BranchStandardEventAddToCart]];

为了获得最佳结果,请使用BranchEvent.h定义的Branch标准事件名称。但是您也可以使用自己的自定义事件名称:

Branch.sharedInstance.logEvent(BranchEvent.customEventWithName("User_Scanned_Item"))
[Branch sharedInstance]
    logEvent:[BranchEvent customEventWithName:@"User_Scanned_Item"]];

额外的事件特定数据也可以通过事件进行跟踪:

let event = BranchEvent.standardEvent(.purchase)
event.transactionID    = "tx-12344555"
event.currency         = .USD
event.revenue          = 12.70
event.shipping         = 10.20
event.tax              = 2.50
event.coupon           = "coupon_code"
event.affiliation      = "store_affiliation"
event.eventDescription = "Shopper made a purchase."
event.searchQuery      = "Fashion Scarf"
event.contentItems     = [ branchUniversalObject ]
event.customData       = [
    "Item_Color": "Red",
    "Item_Size":  "Large"
]
event.logEvent()
BranchEvent *event    = [BranchEvent standardEvent:BranchStandardEventPurchase];
event.transactionID   = @"tx-12344555";
event.currency        = BNCCurrencyUSD;
event.revenue         = [NSDecimalNumber decimalNumberWithString:@"12.70"];
event.shipping        = [NSDecimalNumber decimalNumberWithString:@"10.20"];
event.tax             = [NSDecimalNumber decimalNumberWithString:@"2.50"];
event.coupon          = @"coupon_code";
event.affiliation     = @"store_affiliation";
event.eventDescription= @"Shopper made a purchase.";
event.searchQuery     = @"Fashion Scarf";
event.contentItems    = @[ branchUniversalObject ];
event.customData      = (NSMutableDictionary*) @{
    @"Item_Color": @"Red",
    @"Item_Size":  @"Large"
};
[event logEvent];

启用或禁用用户跟踪

为了帮助我们的客户遵守GDPR和其他限制某些用户收集数据的法律,我们将Web SDK更新为“不跟踪”模式。这样,如果用户指示他们希望保留在您网站上的私密性,或者如果您确定不应该跟踪特定用户,则可以继续使用Branch Web SDK(例如,用于创建Branch链接),同时没有跟踪该用户。此状态是持久性的,这意味着它已在网站的浏览器会话中为用户保存。也可以在所有用户的特定链接或Branch链接中启用此设置。

Branch.sharedInstance().trackingDisabled = true
[Branch sharedInstance].trackingDisabled = YES;

这将防止发送任何分支网络请求(深度链接除外)。如果有人单击“分支”链接,但不想跟踪
,则我们会将深层链接数据返回给应用程序,但不会捕获任何跟踪信息。

在“不追踪”模式下,您仍然可以创建&共享链接。这些链接将没有可识别的信息,并且将是长
格式的链接。如果用户表示不被跟踪,则事件跟踪不会将数据传递回服务器。您可以随时通过调用上述函数来更改这
行为。 trackingDisabled状态已保存并在应用程序运行期间持续存在。

Branch通用对象

使用BranchUniversalObject来描述应用程序中的内容,以进行深度链接接,内容分析和索引。

属性对象以一种标准的方式描述您的内容,以便可以在Spotlight
上进行深度链接,共享或建立索引。您可以设置与该对象关联的所有属性,然后在其上调用操作方法以创建链接或在Spotlight上为其内容建立索引

Branch通用对象最佳做法

这是一组最佳实践,可确保您的分析正确无误,并且您的内容在Spotlight上有效地排名。

  1. 跨应用实例将canonicalIdentifier 设置为唯一的重复数据消除值
  2. 确保titlecontentDescriptionimageUrl 适当地表示对象
  3. 初始化Branch通用对象,并使用页面加载上的BNCRegisterViewEvent 调用userCompletedAction
  4. 当用户执行需要链接的操作时,请在生命周期的稍后阶段调用showShareSheetcreateShortLink
  5. 当采取相应的用户操作时,调用其他对象事件(购买,共享完成等)
  6. contentIndexMode 设置为ContentIndexModePublicContentIndexModePrivate 。如果BranchUniversalObject设置为ContentIndexModePublic ,则将在Spotlight上使用NSUserActivity内容编制索引,否则将使用CSSearchableIndex 内容编制索引。

注意:使用CSSearchableItem 索引的内容可以从Spotlight中删除,但是如果使用NSUserActivity索引则不能删除。

练习避免

  1. 唐' t将相同titlecontentDescriptionimageUrl 在所有的对象。
  2. 不要等待'初始化对象并注册视图,直到用户开始共享。
  3. 在您方便地需要链接之前,不要等待'初始化对象。
  4. Don ' t一次创建许多对象,并在for 循环中注册视图。

方法

let branchUniversalObject: BranchUniversalObject = BranchUniversalObject(canonicalIdentifier: "item/12345")
branchUniversalObject.title = "My Content Title"
branchUniversalObject.contentDescription = "My Content Description"
branchUniversalObject.imageUrl = "https://example.com/mycontent-12345.png"
branchUniversalObject.contentMetadata.contentSchema = .product;
branchUniversalObject.contentMetadata.customMetadata["property1"] = "blue"
branchUniversalObject.contentMetadata.customMetadata["property2"] = "red"
#import "BranchUniversalObject.h"
  
BranchUniversalObject *branchUniversalObject = [[BranchUniversalObject alloc] initWithCanonicalIdentifier:@"item/12345"];
branchUniversalObject.title = @"My Content Title";
branchUniversalObject.contentDescription = @"My Content Description";
branchUniversalObject.imageUrl = @"https://example.com/mycontent-12345.png";
branchUniversalObject.contentMetadata.contentSchema = BranchContentSchemaCommerceProduct;
branchUniversalObject.contentMetadata.customMetadata[@"property1"] = @"blue";
branchUniversalObject.contentMetadata.customMetadata[@"property2"] = @"red";

性质

canonicalIdentifier: 这是内容的唯一标识符,可帮助Branch在同一事物的许多实例之间进行重复数据删除。如果您的网站带有路径,请随时使用。或者,如果您具有实体的数据库标识符,请使用这些标识符。

title: 这是内容的名称,将自动用于OG标签。它将在创建的任何链接的数据字典中插入$og_title

contentDescription: 这是内容的描述,将自动用于OG标签。它将在创建的任何链接的数据字典中插入$og_description

imageUrl: 这是内容的图像URL,将自动用于OG标签。它将在创建的任何链接的数据字典中插入$og_image_url

keywords: 描述对象的关键字。这些用于Spotlight搜索和Web抓取,以便用户可以找到您的内容。

locallyIndex: 如果设置为true,则Branch将在用户'的电话上的Spotlight上为该内容编制索引。

publiclyIndex: 如果设置为true,则Branch将在Google,Branch等上将该内容编入索引。

expirationDate: 内容将不再可用或有效的日期。目前,此功能仅用于Spotlight索引编制,但将来会被Branch使用。

contentMetadata: 详细说明您的内容。根据与您的内容相关的内容类型设置此子对象的属性:

BranchUniversalObject.contentMetadata

BranchUniversalObject.contentMetadata 属性进一步描述了您的内容。这些属性在“Branch”仪表板中是可跟踪的,并将自动导出到您连接的第三方应用程序智能合作伙伴,如Adjust或Mixpanel。

根据与您的内容相关的内容类型设置此子对象的属性。 BranchUniversalObject.contentMetadata.contentSchema 属性描述对象内容的类型。设置其他与类型相关的属性。

contentMetadata.contentSchema: 将此属性设置为最能描述内容类型的BranchContentSchema 枚举。它接受BranchContentSchemaCommerceProductBranchContentSchemaMediaImage类的值。

contentMetadata.customMetadata: 这本词典包含任何额外的参数,你' d喜欢与科通用对象相关联。用户单击链接并打开应用程序后,即可使用这些功能。

contentMetadata.price: 与以下与商业相关的事件一起使用的商品价格。

contentMetadata.currency: ISO 4217货币代码表示价格的货币。默认值为美元。

contentMetadata.quantity: 数量。

contentMetadata.sku: 供应商的SKU。

contentMetadata.productName: 产品名称。

contentMetadata.productBrand: 产品品牌。

contentMetadata.productCategory: BNCProductCategory 值,例如BNCProductCategoryAnimalSuppliesBNCProductCategoryFurniture

contentMetadata.productVariant: 产品变体。

contentMetadata.condition: BranchCondition 值,例如BranchConditionNewBranchConditionRefurbished

ratingAverage, ratingCount, ratingMax: 您的内容的评分。

addressStreet, addressCity, addressRegion, addressCountry, addressPostalCode: 您的内容的地址。

latitude, longitude: 内容的经度和纬度。

imageCaptions: 内容为' s图像的图像标题。

跟踪用户动作和事件

我们已经添加了一系列的自定义事件,您会要开始跟踪的丰富的分析和定位。下面的列表列出了一个示例片段,该片段调用了注册视图事件。

Key
BranchStandardEventViewItem 用户查看了对象
BranchStandardEventAddToWishlist 用户将该对象添加到他们的愿望清单
BranchStandardEventAddToCart 用户将对象添加到购物车
BranchStandardEventInitiatePurchase 用户开始签出
BranchStandardEventPurchase 用户购买了该物品
BranchStandardEventShare 用户完成了分享

方法

branchUniversalObject.userCompletedAction(BranchStandardEventViewItem)
[branchUniversalObject userCompletedAction:BranchStandardEventViewItem];

参量

退货

缩短链接

一旦创建了Branch Universal Object ,即对感兴趣的内容的引用,则可以使用下面描述的机制返回到该链接。

编码说明

关于编码的简要说明。由于NSJSONSerialization 支持有限的类集,因此我们进行一些自定义编码以允许其他类型。当前支持的类型包括NSDictionaryNSArrayNSURLNSStringNSNumberNSNull ,和NSDate (编码为ISO8601字符串时区)。如果参数的类型未知,它将被忽略。

方法

let linkProperties: BranchLinkProperties = BranchLinkProperties()
linkProperties.feature = "sharing"
linkProperties.channel = "facebook"
linkProperties.addControlParam("$desktop_url", withValue: "http://example.com/home")
linkProperties.addControlParam("$ios_url", withValue: "http://example.com/ios")

branchUniversalObject.getShortUrl(with: linkProperties) { (url, error) in
    if error == nil {
        NSLog("got my Branch link to share: %@", url)
    }
}
#import "BranchLinkProperties.h"
  
BranchLinkProperties *linkProperties = [[BranchLinkProperties alloc] init];
linkProperties.feature = @"sharing";
linkProperties.channel = @"facebook";
[linkProperties addControlParam:@"$desktop_url" withValue:@"http://example.com/home"];
[linkProperties addControlParam:@"$ios_url" withValue:@"http://example.com/ios"];

[branchUniversalObject getShortUrlWithLinkProperties:linkProperties andCallback:^(NSString *url, NSError *error) {
    if (!error) {
        NSLog(@"success getting url! %@", url);
    }
}];

链接属性参数

channel: 链接的渠道。示例可能是Facebook,Twitter,SMS等,具体取决于共享位置。

feature: 生成的链接将与之关联的特征。例如。 sharing

controlParams: 建立“分支”链接时要使用的字典。您可以在此处指定自定义行为控件,如下表所述。

您可以通过在字典插入以下可选键来进行自定义重定向:

Key
$fallback_url 未安装应用程序时将所有平台的用户发送到何处。请注意,Branch会将所有机械手转发到此URL,从而覆盖在链接中输入的所有OG标签。
$desktop_url 在台式机或笔记本电脑上将用户发送到何处。默认情况下,它是Branch托管的text-me服务。
$android_url 对于Play商店中的替换URL发送用户,如果他们没有应用。 仅当您想要移动网络启动时才需要。
$ios_url 为App Store替换URL发送用户,如果他们没有应用。 仅当您想要移动网络启动时才需要。
$ipad_url 与上述相同,但适用于iPad Store。
$fire_url 与上述相同,但适用于Amazon Fire Store。
$blackberry_url 与上述相同,但适用于Blackberry Store。
$windows_phone_url 与上述相同,但适用于Windows Store。
$after_click_url 当用户转到应用程序后返回浏览器时,将其带到该URL。仅限 iOS; Android即将面世

通过在字典插入以下可选键,您可以控制每个链接的直接深度链接接:

Key
$deeplink_path 您希望我们追加到您的URI的深度链接接路径的值。例如,您可以指定" $ deeplink_path " : " radio / station / 456 "然后我们将使用URI " yourapp:// radio / station / 456?link_click_id = branch-identifier "打开应用程序。这主要是为了支持旧版深度链接接基础结构。
$always_deeplink 对或错。 (默认为不深链接第一)此键可以指定有我们的链接服务力量试图打开该应用程序,即使我们不能确定用户已安装的应用程序。如果未安装该应用程序,我们将退回到相应的应用程序商店或$ platform_url密钥。默认情况下,我们只有当我们打开应用程序见过用户在您的应用程序从一个Branch链路发起会话(已的Cookie和Branch深链接)。

alias: 链接的别名。例如。 myapp.com/customalias

matchDuration: 该链接带来的点击的归因窗口(以秒为单位)。

stage: 用于生成链接的阶段,指示用户位于渠道的哪个部分。

tags: 与链接关联的标记字符串数组。

获取简短网址参数

linkProperties: 上面创建的链接属性描述了' d喜欢的链接类型

callback: 成功时使用url调用的回调,如果出现问题则返回错误。请注意,我们'在100%的时间内返回链接。如果网络可用,则是一个短的网络;如果网络不可用,则一个长的网络。

4个月前更新

Mac OS高级功能


建议的编辑仅限于API参考页

您只能建议对Markdown正文内容进行修改,而不能建议对API规范进行修改。