2020年,極光推送,別名推送居然收不到了


前言:最近公司新增業務,需要區別推送,那肯定就是極光的別名推送了,測試的時候發現以前可以現在不行了

原因:原來是極光做了調整,好吧,都怪自己不常看站內信吧!

 

解決辦法:

1、由於對別名的限制,客戶端會注冊不了別名,所以,當注冊不了別名時,就是 JPUSHService setAlias 時返回碼不為0時給后台發個請求,讓后台清理一下別名綁定的設備,然后客戶端再延遲2秒再次注冊一下別名即可。

+ (void)JPUSHServiceSetAlias:(NSString*)alias {
    [JPUSHService setAlias:alias completion:^(NSInteger iResCode, NSString *iAlias, NSInteger seq) {
        NSLog(@"**********code:%ld content:%@ seq:%ld", iResCode, iAlias, seq);
        if (iResCode != 0) {
            // 6027 綁定別名失敗  6014 請求繁忙
            [MyAPIClient postData:[API myDeleteAliasPath] params:@{} success:^(id data) {
                dispatch_time_t delayTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC));
                dispatch_after(delayTime, dispatch_get_main_queue(), ^{
                    [JPUSHService setAlias:alias completion:^(NSInteger iResCode, NSString *iAlias, NSInteger seq) {
                        NSLog(@"-----------code:%ld content:%@ seq:%ld", iResCode, iAlias, seq);
                    } seq:0];
                });
            } failure:^(NSError *error) {
            }];
        }
    } seq:0];
}

2、當退出時解綁別名

    [JPUSHService deleteAlias:^(NSInteger iResCode, NSString *iAlias, NSInteger seq) {
       // 回調返回的 tags 為 nil。返回對應的狀態碼:0 為成功,其他返回碼請參考錯誤碼定義。seq 為調用時傳入的會話序列號
    } seq:0];

 

注:客戶端初始化極光推送的時候,最好上傳IDFA,因為iOS客戶端卸載重裝就會算是一個新設備。

鑒於 iOS 系統設計上限制設備唯一標識,所以極光一直使用 Device Token 作為標識,也因為極光推送本身就是需要 Device Token 這個值才可能運作的。

iOS 9 版本之后,每次卸載后重裝都會導致 Device Token 變化,所以對於極光后台來說,都只能被識別為新用戶。

極光 SDK 新版本增加了 IDFA 選項,在集成初始化 SDK 時可選把 IDFA 這個值設置進來,這樣極光后台就優先根據 IDFA 值來識別用戶,從有一定的可能性應用被卸載后重裝還能識別回老設備。

IDFA 是廣告標識符,是 iOS 專門為廣告跟蹤唯一地識別用戶而設計的。在 iOS 設備上,設備 -> 隱私 -> 廣告這個頁面,有一個設置項:限制廣告跟蹤。默認是未選中狀態的,即是關閉狀態,是不限制的。用戶可以選中,從而限制廣告跟蹤。設置項之外還有一個按鈕:還原廣告標識符…。如果用戶點擊了這個按鈕,則 IDFA 值會變化。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM