留存用戶、留存率、流失用戶
API Push Schedule (修改了HTTP協議頭)
- AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
- manager.securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone];
- manager.requestSerializer = [AFJSONRequestSerializer serializer];
- manager.responseSerializer = [AFJSONResponseSerializer serializer];
- [manager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Accept"];
- [manager.requestSerializer setValue:@"application/json; charset=utf-8" forHTTPHeaderField:@"Content-Type"];
為什么集成成功后iOS收不到推送通知?
請確保:
- 推送的key和應用集成的key是同一個;
- iOS應用程序的證書和你上傳到JPush Portal上上傳的證書是同一個;
- 推送時指定的iOS推送環境和應用證書是同一個環境。
溫馨提示:目前V3 api推送可以通過參數apns_production來指定推送環境:false為開發環境,true為生產環境。V3 api不帶此參數則默認為生產環境,V3 api封裝的sdk 默認為開發環境。
為什么啟動的時候出現 Did Fail To Register For Remote Notifications With Error的錯誤
程序運行的時候出現下面的錯誤信息:
did Fail To Register For Remote Notifications With Error: Error Domain=NSCocoaErrorDomain Code=
3000
"未找到應用程序的“aps-environment”的權利字符串"
UserInfo=
0x1c55e000
{NSLocalizedDescription=未找到應用程序的“aps-environment”的權利字符串}
|
這個是由於你的Provisioning Profile文件,不具備APNS功能導致的。請登陸Apple Developer 網站設置好證書,更新Provisioning Profile,重新導入Xcode。
或參考:http://blog.csdn.net/stefzeus/article/details/7418552
如何在接收到 APN 的時候獲取 APN 消息內容並進行跳轉或做出響應處理?
如何關閉 APN 推送?
關閉推送有以下兩種方式關閉:
1.在iOS系統設置的通知設置中更改對應app的推送設置(推薦);
2.在代碼中調用 [[UIApplication sharedApplication] unregisterForRemoteNotifications];
對應以上關閉方式的重新打開推送方法:
1.在iOS系統設置的通知設置中修改對應app的推送設置;
2.在代碼中重新調用 [APService registerForRemoteNotificationTypes:];
App badge number(角標)如何更改與清空?
JPush 網站上推送 iOS 通知時,可選設置里面有選項可以指定 badge 的參數的值,如:1或"+1"。
api上指定badge的參數請看:Push-API-v3#API-v3-ios,客戶端上報badge到JPush服務器的接口請看:設置badge。
Icon Badge number 的清空方法:
- APN 推送內容指定 badge number 為 0;
- 在代碼中使用如下代碼清空 badge number: [[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];
注意:badge累加只能通過v3api推送,且只有1.7.4版本以上才能支持。
為何推送一條 APN 后,點擊通知中心的 APN 通知打開 App,可是 APN 通知在通知中心依然存在而未被刪除?
如果推送 APN 時,Badge number 被指定為0 ,則可能出現 APN 消息在通知中心被點擊后,盡管調用了 [[UIApplication sharedApplication] setApplicationIconBadgeNumber:0]; 但 APN 消息在通知中心不會被刪除的情況。 這種情況可以按如下代碼調用以清除通知中心的 APN 通知。
[[UIApplication sharedApplication] setApplicationIconBadgeNumber:
1
];
[[UIApplication sharedApplication] setApplicationIconBadgeNumber:
0
];
|
如果仍有其他消息,則考慮清除 local notification 通知。( [[UIApplication sharedApplication] cancelAllLocalNotifications] )
出現Not get deviceToken yet. Maybe: your certificate not configured APNs?...錯誤日志時如何排除問題?
如果出現上述日志,則說明一段時間內都無法獲取device token,那么:
1.確認你的app配置了apns權限,如果未配置apns權限,則應該會出現此錯誤提示。
2.確認你的app運行在ios真機而非模擬器上,且通知中心中對應app的通知權限沒有完全關閉(alert/sound/badge至少有一個權限是打開的)。
3.確認info.plist上的BundleID是否和上傳到JPush官網的p12證書的BundleID一致,BuildSetting里面的Provision Profile是否屬於JPush官網上顯示的BundleID,CodeSigning選擇的證書是否from你所選擇的Provision Profile的證書。
4.確認你的網絡狀況,與apple的服務器的連接是通過tcp的 5223端口連接,確認你網絡的對應端口是否可用,可通過下列命令來確認這點:
telnet
1
-courier.push.apple.com
5223
|
5.在代碼中可在以下兩個函數中斷點以確認device token的獲取狀態。
- (
void
)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken;
- (
void
)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error;
|
如果app運行進入didFailToRegisterForRemoteNotificationsWithError 則說明app的APNS權限問題或者app運行在模擬器,參考 證書設置文檔。
如果app運行進入didRegisterForRemoteNotificationsWithDeviceToken 則說明運行正常,請確認你在此函數中的代碼中有將token傳遞給jpush的調用:
[APService registerDeviceToken:deviceToken];
|
6.如果以上兩個registerRemoteNotification的函數都未進入, 請確認你的代碼中有注冊申請apns的函數調用:
[APService registerForRemoteNotificationTypes:];
|
6.如果上述情況都已確認且未進入第4步的任意回調函數,則可以判斷無法獲取token的原因在於設備與apple的網絡連通性問題(注:一個設備只有在未申請過token的情況下才會需要與apple的網絡交互來獲取token,已經獲取過某一環境token的設備在無網絡的情況下也能獲取到對應環境的token(環境分為 開發/生產)),這種情況下切換網絡能夠在大部分情況下解決此問題。
7.如果仍然有問題,請將上述步驟的結果以郵件附件的形式發送到JPush支持郵箱,我們將協助你解決此問題。
上傳到appStore的版本為什么收不到推送?
1.請確認xcode選擇的生產證書和上傳的證書的bundleid一致;
2. 如果是在jpush網站上推送,請確認新建通知時推送對象是否選擇了生產環境,如圖:
3.如果使用了V2 api 的apns_production參數,值是否為:1;如果使用了V3 api 的apns_production參數,值是否為:true。
iOS 平台上傳證書一直為未通過狀態
證書上傳未通過的原因一般有:
1.當前上傳的p12證書密碼輸入有誤;
2. 證書導出的時候展開了證書,把個人私鑰導了出來,導證書的時候請不要展開證書;
3.當前上傳的證書環境不對,如:在上傳開發證書的地方上傳了生產證書;
4.該證書已在本賬號的其它應用使用;
5.現上傳的證書與當前應用已上傳成功的證書的bundle id不一致。
具體請看上傳后顯示的錯誤輸出內容。
為什么日志里面會打印:You've implemented -[<UIApplicationDelegate>application:didReceiveRemoteNotification:fetchCompletionHandler:], but you still need to add "remote-notification" to the list of your supported UIBackgroundModes in your Info.plist.
這個主要是提示開發者如果要支持UIBackgroundModes,需要開啟Remote notifications,具體操作可以看:iOS 7 Background Remote Notification
應在所有的需要統計得頁面得 viewWillAppear 和 viewWillDisappear 加入 startLogPageView 和 stopLogPageView 來統計當前頁面的停留時間。