AppsFlyerFramework归因的坑

0 阅读1分钟

pod'AppsFlyerFramework','~>6.17.8’

support.appsflyer.com/hc/en-us/ar…

有时候走了推广网页链接后 拿不到回调值 报出 notfound

  • (void)didResolveDeepLink:(AppsFlyerDeepLinkResult *)result

这里记录下坑:

1:这个回调,手机修改系统时间也拿不到

2:info.plist里没写:Advertising attribution report endpoint URL :appsflyer-skadnetwork.com/

3 Associated Domains没配置:

4:开启:后台SKAN

拿到之后进行业务逻辑处理:

  • (void)didResolveDeepLink:(AppsFlyerDeepLinkResult *)result {

    switch(result.status) {

        case AFSDKDeepLinkResultStatusNotFound:

            NSLog(@"555-not found:%@",result.error);

//            [BRAppDelegate hideHUD];

//            [CommonUtil showCommonToastWithStr:@"新安装数据 not found" hideAfterSeconds:2 andAfterPostAction:nil postObject:nil];

            break;

        case AFSDKDeepLinkResultStatusFailure:

            NSLog(@"555-link failure");

//            [BRAppDelegate hideHUD];

//            [CommonUtil showCommonToastWithStr:@"新安装数据 link failure" hideAfterSeconds:2 andAfterPostAction:nil postObject:nil];

            break;

        case AFSDKDeepLinkResultStatusFound:

            NSLog(@"555-link found");

            break;

        default:

            break;

    }

//    [SVProgressHUD dismiss];

    [BRAppDelegate hideHUDAF];

    AppsFlyerDeepLink*deepLink =  (AppsFlyerDeepLink *)result.deepLink;

    NSString*str =  [deepLinktoString];

    NSLog(@"str555:%@",str);

    if(deepLink !=nil)

    {

        NSString*mydeeplinkValue =  deepLink.deeplinkValue;

        NSString*mymediaSource = deepLink.mediaSource;

        NSString*campaignId = deepLink.campaignId;

        NSLog(@"555mydeeplinkValue:%@",mydeeplinkValue);

// 20250211

//        [CommonUtil showCommonToastWithStr:[NSString stringWithFormat:@"新安装拿到数据:%@",mydeeplinkValue] hideAfterSeconds:1 andAfterPostAction:nil postObject:nil];

        if(mydeeplinkValue) {

            [[NSUserDefaultsstandardUserDefaults]setObject:mydeeplinkValueforKey:@"AFDeepLinkValue"];

            NSDictionary*dict = [mydeeplinkValuemj_JSONObject];

         NSString*AFDeepLinkValue =  [mydeeplinkValueURLDecodedString];

            NSString*linkV = [dictobjectForKey:@"link_value"];

            NSMutableDictionary *paramDict = [NSMutableDictionary dictionary];

            // 1. 因为NSURLComponents需要完整URL结构,给参数串拼接一个假的URL前缀即可

            NSString*dummyURLStr = [NSStringstringWithFormat:@"xxx?%@",linkV];

            NSURLComponents*components = [NSURLComponentscomponentsWithString:dummyURLStr];

            // 2. 系统直接解析出所有query参数对象

            for(NSURLQueryItem*itemincomponents.queryItems) {

                // NSURLQueryItem已经自动做了百分号解码,无需额外处理

                paramDict[item.name] = item.value?:@"";

            }

            NSLog(@"paramDict:%@",paramDict);

            // 3. 取值和上面完全一致

            NSString*channel = paramDict[@"channel"] ?:@"默认值";

            NSString*appidStr = paramDict[@"appid"] ?:@"0";

            NSLog(@"linkV:%@\nchannel:%@\nappidStr:%@",linkV,channel,appidStr);

            [CommonUtilAFSaveChannel:channel];

            [[NSNotificationCenter defaultCenter]postNotificationName:@"refreshLocal" object:nil userInfo:@{@"afChannel":@"1"}];

        }

        if(mymediaSource) {

            [[NSUserDefaultsstandardUserDefaults]setObject:mymediaSourceforKey:@"AFMediaSource"];

        }

        [[NSUserDefaults standardUserDefaults] synchronize];

    }

}