我正在开发一个Apple Push Notification
集成的iPhone应用程序.我对此有些怀疑.
如果用户点击了APNS注册提醒中的"不允许"按钮,我们的代码是否仍会从APNS收到设备令牌?
我已经测试过,当用户在iPhone通知中关闭通知时,应用程序仍会从APNS接收设备令牌吗?它是正确的?
任何人都可以澄清这些疑虑吗?
我有一个适用于iOS的应用程序,我想集成那里的推送通知。我在 youtube 上看过一个教程,一切正常,但最近我正在使用开发证书(用于测试 - 不是用于 AppStore),并且我的服务器上有 PHP 脚本。在这个文件中存储有我的 iPhone 的 deviceToken,它是用 php 变量 $deviceToken 编写的。但是现在,当我想在 AppStore 中使用它时,如何从下载我的应用程序的每个人那里获取设备令牌并将其放入 PHP 脚本中?
这是我的 PHP 文件:
if($_POST['message']){
$deviceToken = '(my device token)';
$message = stripslashes($_POST['message']);
$payload = '{
"aps" :
{ "alert" : "'.$message.'",
"badge" : 1,
"sound" : "bingbong.aiff"
}
}';
$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert', 'cert.pem');
stream_context_set_option($ctx, 'ssl', 'passphrase', 'password');
$fp = stream_socket_client('ssl://gateway.sandbox.push.apple.com:2195', $err, $errstr, 60, STREAM_CLIENT_CONNECT, $ctx);
if(!$fp){
print "Failed to connect $err $errstrn"; …
Run Code Online (Sandbox Code Playgroud) php xcode push-notification apple-push-notifications devicetoken
在开发中一切正常:
但是,当我切换到生产(启用推送通知并为生产创建新的SSL证书)时,我不断从Rapns(安装在我的推送通知服务器上)获得"(8)无效令牌" .
我已经读过这条消息可能是因为我在生产中使用开发设备令牌(即我的服务器使用生产证书,但应用程序在开发中运行并将开发设备令牌发送到服务器).
如何在生产模式下运行应用程序,以便为生产获取有效的设备令牌?
我想我应该使用Ad Hoc Distribution Provisioning配置文件,但即使我在Build设置中正确地更改了"Code Signing Identity",我仍然得到了我在开发中获得的相同标记!这显然不起作用.
我正在使用visual studio 2012在手机间隙+移动jquery中创建一个Windows Phone 8应用程序.我想从设备获取设备令牌ID以进行推送通知.任何人都可以指导我如何获得Windows Phone 8的设备令牌ID?
我在DB中存储Android和iOS设备令牌.以下是设备令牌保存在数据库中的几个示例.
如何区分特定设备令牌是用于Android还是iOS设备?
我无法接收来自解析网站的推送通知,它说发送到2个设备但推送已发送为0,我可以在解析核心的安装类中看到我的设备带有id和all.
我甚至用过
-(void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error{
...
}
Run Code Online (Sandbox Code Playgroud)
为了显示任何错误但没有找到任何内容.有关如何解决这种情况的任何建议?
我遇到了我的iOS应用程序PFInstallation的奇怪行为.在每个应用程序启动时,我正在注册设备以接收推送通知并在方法上调用以下代码didRegisterForRemoteNotificationsWithDeviceToken
:
PFInstallation *currentInstallation = [PFInstallation currentInstallation];
[currentInstallation setDeviceTokenFromData:deviceToken];
NSLog(@"%@", currentInstallation );
[currentInstallation saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
if (succeeded) {
NSLog(@"currentInstallation saved" );
}
if (error) {
NSLog(@"currentInstallation NOT saved" );
}
}];
Run Code Online (Sandbox Code Playgroud)
当我在iphone上安装应用程序时,使用deviceToken正确保存安装.我绝对相信前几天我通过Parse Dashboard手动删除了deviceToken(尝试一下)然后在app重新启动时,设备令牌再次正确保存.我正在使用的某些频道也是如此.今天没有保存deviceToken,也没有保存频道.saveInBackgroundWithBlock成功但deviceToken字段为空.currentInstallation的NSLog包含deviceToken,但它没有保存.在尝试理解这种行为的原因时,我发现如果我在此currentInstallation.deviceToken = @"";
之后添加该行,PFInstallation *currentInstallation = [PFInstallation currentInstallation];
则deviceToken会被正确保存.消费Parse guru向我解释为什么会发生这种情况以及为什么几天前它不是?我最近在这个应用程序上升级了Parse Framework,这可能是什么原因?
我记得,在重新安装iPhone时,设备令牌永远不会改变.
然而现在(特别是在iOS 9上),我注意到如果我重新安装应用程序,设备令牌正在改变.
此设置是由Apple完成还是我遗漏了什么?
我必须知道这一点,因为这对我来说非常重要,因为我发送基于特定用户的推送来通知他们的更新.
也没有理由不需要许多设备令牌.
注意
我在App Delegate中的webservice下面调用
- (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken
{
// sending it to online database for my record
}
Run Code Online (Sandbox Code Playgroud) 我有2部iphone:1 - ios 10和2 - ios 9
在尝试第一款iphone时:
didRegisterForRemoteNotificationsWithDeviceToken
当用户在警报上单击"允许"时,不调用方法但是,方法didRegisterUserNotificationSettings
IS被调用.在这种情况下,设备不会收到推送通知.
在尝试第二款iphone时:
这两种方法都在这里调用.设备可以接收推送通知.
然后我检查了模拟器ios 8
在这种情况下与第1次相同.只调用一种方法.
我检查了类似问题的一些答案,但他们没有帮助我.我怀疑这个问题是在推送通知设置中的某个地方,因为它可以正常工作.所以问题出在ios 10中.
问题是:
didRegisterForRemoteNotificationsWithDeviceToken
期待您的帮助!
我试图获得 APNS 推送令牌。
func configPushNotifications(_ application: UIApplication) {
application.registerForRemoteNotifications()
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我使用的是 My Phone Sim Internet (4g/3g),则没有从 AppDelegate 收到任何令牌。
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data)
Run Code Online (Sandbox Code Playgroud)
但是如果我使用Wifi,它工作正常。我检查iOS 13.1.2
和13.1.3
。两者都有相同的问题。但较低的版本喜欢iOS 12 or 11
工作正常。是苹果虫吗?或者我必须为移动网络请求具有不同配置的令牌?